很基础的ret2libc题目
IDA看看
很容易可以发现,getname1函数中存在明显的栈溢出,也能看到,整个题不止这一个漏洞。但是我只会利用getname1这一种。。
我们看一下有没有system函数和它的参数
1 | 地址 长度 类型 字符串 |
两个东西都没有。那联想到是不是要泄露libc,就像不久前做的LEVEL3一样。
首先要泄露puts的真实地址,然后与libc中puts的地址相减计算出偏移,再用libc中system的地址加上偏移,从而得出system函数的真实地址进行调用,”/bin/sh”的地址同理,又因为是64位程序,需要用寄存器传参,所以我们需要找一个合适的gadget
1 | $ ROPgadget --binary pwn1 --only "pop|ret" |
选择pop rdi ; ret
1 | exp: |
再贴一个用了LibcSearcher的exp
1 | # -*- coding: utf-8 -*- |
末尾贴一个南梦师傅的exp(咲夜南梦NB)
1 | #!/usr/bin/python2.7 |