level0
查看基本信息并运行文件
查看文件类型: file level0
查看保护: checksec --file=level0
运行文件:./level0
该文件在我的电脑中的文件名为level0
在IDA中分析
文件64位,将其拖入64位ida中。
按Space切换视图
按F5生成伪代码
发现另外一个函数:
分析:
我们只需要调用callsystem()函数就可以得到flag,而vulnerable_function()函数中调用了read()函数,这里是可以利用的一个点,通过向buf中输入过量数据修改函数的返回地址到callsystem()即可。
…
payload = b’a’ * (0x80 + 0x8) + p64(callsystem()函数地址)
callsystem()函数的地址可以通过 .symbols[ ] 函数得到:
elf = ELF(“level0”)
callsystem_addr = elf.symbols[“callsystem”]
该文件在我的电脑中的文件名为level0
exp
当 content=1 时打本地,本地没有flag文件所以得不到flag;修改为 content=0 ,输入正确的远程地址再运行即可得到flag。
该python文件在我的电脑中文件名为exp.py
终端输入python3 exp.py
下面图片是 content=0 时运行截图
输入ls查看当前目录下有哪些文件,发现有flag,cat flag即可。