Pwn入门题两道 netcat使用与栈溢出

Pwn入门题两道 netcat使用与栈溢出

 

 

 

第一道题,先下载test,再把文件拖到ida中打开.点击main函数,f5反汇编.

 

 

 

看到system(/bin/sh)这行代码.可以理解为执行这行代码我们的权限提示,能对电脑进行其他操作,比如找出flag.这道题直接把后门函数给出来了.我们只要连接到远程的电脑就能获得权限了.所以,只需要在终端直接nc靶机信息就可以了.

ncnetcat,是功能众多的网络测试工具.kali虚拟机上能直接使用.

 

 

 

连接靶机.

 

 

 

输入ls查看文件,发现flag

输入cat flag获得flag

 

 

 

 

 

 

 

第二道题也是先在ida中打开文件反汇编

 

 

 

在主函数中找不到后门函数.但是在主函数下面的fun()函数中发现了后门函数.

 

 

 

 

关键是怎么样才能执行这个函数.

可以观察到主函数读入字符用的gets函数,这是危险的,能造成栈溢出.能改变被调用函数的返回地址.

简单来说,gets是被调用函数,在把他压入栈时会先压入返回地址,之后是被调用函数的基地址,64位系统是8个字节.再之后就是把被调用函数的数据压入栈中.

 

 

 

主函数中chars数组是15字节,再加上基地址的8字节就满了,这时候数据溢出到了返回地址.我们只要输入fun函数的返回地址能进入后面函数了.

 

 

 

返回地址是0x401186.也就是说只需要输入字节让数据溢出到返回地址,再输入想转到的地址,就能执行到后门函数了.

接下来写出exp

需要pwntools.

 

 

 

 

地址加1是为了堆栈平衡,保证能打通远程的靶机.p64是为了把地址打包为64位发送.decode(iso-8859-1)是因为在python3p64函数会报错,需要转换为字符串格式.

 

 

 

kali上运行.

 

 

 

Ls发现flag

 

 

 

得到flag.

总结:简单的pwn入门,但是和其他方向相比确实知识较多.主要是栈溢出与exp编写,net cat的使用.

 

posted @ 2022-12-25 17:12  M4r1s4  阅读(143)  评论(0编辑  收藏  举报