栈溢出dltest解题步骤
思路分析:观察源码,是个栈溢出。没有system函数,也没有给libc库,但有read函数和write函数。可以借助DynELF定位system地址,然后借助read函数写入“/bin/sh”,并调用执行system(“/bin/sh”)
0x01 查看题目信息
0x02 checksec检查可执行文件属性
没有开启各种保护,RELRO为” Partial”,对GOT表具有写权限。
0x03 ida反编译
首先F5键对main函数反编译 ,并查看到有write函数和
一个vuln函数。
查看vuln(),发现有read()函数,可向buf中写入0x100,查看buf大小,为0x6c+4,可知有栈溢出。
0x04 查找溢出点
gdb中执行以下命令,并copy刚生成的200个字符,run后paste
pattern create 200
r
查看到溢出点位置0x41384141,并算出需要填充padding大小为112(0x70)