vunl

很明显的栈溢出,不过程序开了NX,所以需要rop

exp

主要利用int执行read write函数,由于程序里没有open函数,所以需要找一个地方使得eax为5之后int调用open。

程序里有关于alarm,可以调用alarm(5),在调用alarm(随意),使得eax为5,然后再int 8,就执行了open。

read的时候,可以发现由于

type value
standard input 0
standard outpue 1
standard error 2

之后程序只要打开设备,分配返回的fd就从3开始依次增加。

所以这里可以通过read(3, buf, bytes)来取得flag,然后write写道管道里读取

results matching ""

    No results matching ""