start
漏洞
栈溢出。
思路
这个程序用了两个系统调用,系统调用号分别是04和03,write
和read
。
这个栈的结构比较简单,没有ebp
,retn
对应的是exit
,设retn
对应栈+4
的位置为A,A里面的内容是这个位置的栈地址。
这里需要注意的是,虽然这个程序没有开PIE,但是ASLR是启动了的。也就是堆栈地址随机化。 先用栈溢出到开始代码段构造
write
的地方,这个时候的esp
刚好指向A,于是就可以打印出栈地址。
然后只要把shellcode放到栈上就好了。
第一次打印地址的时候注意不要用sendline
,会覆盖掉地址内容。
exp
1 |
|