手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

Linux PWN从入门到熟练

来源£º本站整理 作者£º佚名 时间£º2018-11-19 TAG£º 我要投稿

最近在复习pwn的一些知识¡£主要涉及到当堆栈开启了保护的时候£¬我们不能够直接将shellcode覆盖到堆栈中执行£¬而需要利用程序其他部分的可执行的小片段来连接成最终的shellcode¡£此小片段就是gadgets¡£本文主要通过练习题的方式讲述如何寻找gadgets£¬如何利用现有的工具来加速自己的pwn的效率¡£Gadgets的类型和?#35759;?#20063;逐步变化¡£下面带来手把手教你linux pwn¡£让你的pwn技术从入门到熟练¡£练习题的?#35759;?#36880;步加大¡£
第一关
第一关的gadgets较为简单£¬包含了一个直接可以利用的£¬可返回shell的函数¡£我们只要计算好覆盖的偏移£¬将可返回shell函数的地址覆盖到相应的位置即可以¡£程序下载£ºPwn1
我们首先来查看一下该程序的保护情况£¬发现开启了堆栈保护¡£即NX enabled¡£且是32bit的程序¡£因此需要在32位的linux环境下测试¡£

这里涉及到一个工具£¬chechsec¡£该工具专门用来检测程序中受保护的情况£¬我们可以根据程序受保护的情况来选择对应的pwn策略¡£
下载以后£¬直接在命令行中建立符号链接就可以在terminal中直接使用了
sudo ln –sf checksec /usr/bin/checksec
接下来我们利用IDA查看一下程序的源代码£º


可以发现漏洞出现在gets里面£¬gets函数存在缓冲区溢出漏洞£¬我们可以通过超长的?#22336;?#20018;来覆盖缓冲区£¬从而修改ROP¡£为了达到这个目的£¬我们需要首先计算£¬输入的&s的堆栈地址位置距离堆栈的底部ebp的位置¡£Ebp的下一个地址£¬就是记录了返回地址的位置¡£在32位的程序中£¬就是ebp+4¡£其中£¬Esp是栈顶指针£¬ebp是栈?#23383;?#38024;¡£Esp -> ebp, 地址从小到大¡£小地址栈顶£¬大地址栈底¡£
我们有两种方法可以得到s距离返回地址的偏移?#21644;?#25163;计算和利用patternoffset产生?#22336;?#20018;¡£
首先第一种方法£¬徒手计算¡£我们利用gdb的辅助工具gef来辅助查看esp地址¡£
注意£¬这里需要按照这个辅助工具£¬gef£¬该工具会提供更加丰富的调试信息¡£包括堆栈信息£¬寄存器信息等¡£按照完毕之后£¬使用gdb –q *.elf执行就可以¡£
启动的程序之后£¬我们在上述get函数的位置下?#31995;ã£?#21363;0x080486AE


可以看到 esp 为 0xbfffeed0£¬ebp为0xbfffef58£¬同时 s 相对于 esp 的索引为[esp+80h-64h]= [esp+0x1c]¡£所以s的地址为 0xbfffeeec£¬所以 s 相对于 ebp 的偏移为 0x6C£¨108£©£¬所以相对于返回地址的偏移为 0x6c+4£¨112£©¡£
另外一种方法是利用patternoffset执行来计算¡£借助到这个工具patternoffset¡£下载下来直接作为python脚本使用¡£利用下面的命令产生?#22336;?#20018;到test的文件中£º
python patternLocOffset.py -c -l 700 -f test
接着远程IDA?#20197;?#35843;试£¬在程序的返回位置下?#31995;ã£?#21363;retn的位置¡£

它会在远程的服务器端等待我的输入
~/ $ ./linux_server
IDA Linux 32-bit remote debug server(ST) v1.22. Hex-Rays (c) 2004-2017
Listening on 0.0.0.0:23946...
=========================================================
[1] Accepting connection from 192.168.110.1...
There is something amazing here, do you know anything?
在这个位置£¬我就把产生的pattern计算?#22336;?#20018;复制进去¡££¨注意£¬如果这里始终没有让程序停下来让你输入对应的?#22336;?#20018;进去的话£¬就断开ubuntu的server£¬然后重新连接一下£¬就会停下来等待我们的?#22336;?#20018;输入£©
接着£¬查看程序覆盖的寄存器ebp的内容为0x41366441

再利用offset的脚本计算一?#29575;?#20837;的缓冲区地址距离ESP相差多少的字节£¬相差的是108个字节¡£ESP之后£¬存储的就是返回的地址£¬所以要加上108+4=112字节的偏移¡£

得到的结果和上面是一致的¡£
接下来£¬我们需要找到可以利用的系统调用函数¡£在IDA中搜索£¨alt+T£©可以利用来的系统sh调用函数£º

最后£¬将需要覆盖的地址0x0804863A填入指定的位置覆盖£¬在利用pwntools来验证攻击¡£这里利用到了一个pwntools工具¡£推荐使用基于源代码的安装方式£¬可以更为方便¡£
安装方式为£º
cd ~
git clone https://github.com/aquynh/capstone
cd capstone
make
make install
cd ~
git clone https://github.com/Gallopsled/pwntools
cd pwntools
python setup.py install

[1] [2] [3]  下一页

¡¾声明¡¿:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的£¬并不代表本站赞同其观点?#25237;?#20854;真实性负责£¬仅适于网络安全技术爱好者学习研究使用£¬学习中请遵循国家相关法律法规¡£如有问题请联系我们£¬联系邮箱[email protected]£¬我们会在最短的时间内进行处理¡£
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载
        ¹ºÂò²ÊƱȨÍþÍøÖ·
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中