Pwn入门题两道 netcat使用与栈溢出
第一道题,先下载test,再把文件拖到ida中打开.点击main函数,按f5反汇编.
看到system(“/bin/sh”)这行代码.可以理解为执行这行代码我们的权限提示,能对电脑进行其他操作,比如找出flag.这道题直接把后门函数给出来了.我们只要连接到远程的电脑就能获得权限了.所以,只需要在终端直接nc靶机信息就可以了.
nc指netcat,是功能众多的网络测试工具.在kali虚拟机上能直接使用.
连接靶机.
输入ls查看文件,发现flag
输入cat flag获得flag
第二道题也是先在ida中打开文件反汇编
在主函数中找不到后门函数.但是在主函数下面的fun()函数中发现了后门函数.
关键是怎么样才能执行这个函数.
可以观察到主函数读入字符用的gets函数,这是危险的,能造成栈溢出.能改变被调用函数的返回地址.
简单来说,gets是被调用函数,在把他压入栈时会先压入返回地址,之后是被调用函数的基地址,在64位系统是8个字节.再之后就是把被调用函数的数据压入栈中.
主函数中char的s数组是15字节,再加上基地址的8字节就满了,这时候数据溢出到了返回地址.我们只要输入fun函数的返回地址能进入后面函数了.
返回地址是0x401186.也就是说只需要输入字节让数据溢出到返回地址,再输入想转到的地址,就能执行到后门函数了.
接下来写出exp
需要pwntools库.
地址加1是为了堆栈平衡,保证能打通远程的靶机.p64是为了把地址打包为64位发送.而decode(“iso-8859-1”)是因为在python3中p64函数会报错,需要转换为字符串格式.
在kali上运行.
Ls发现flag
得到flag.
总结:简单的pwn入门,但是和其他方向相比确实知识较多.主要是栈溢出与exp编写,net cat的使用.
标签:入门,flag,调用函数,地址,Pwn,netcat,溢出,函数 From: https://www.cnblogs.com/i6288/p/17004266.html