手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中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亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        嫦娥奔月的神话故事peicaitu pt古怪猴子手机app官方 斯特拉斯堡景点 最新湖北30选5开奖结果 广西快乐双彩规则 竞彩篮球大小分会变吗 7k7k四人麻将小游戏 柏林赫塔vs云达不莱梅 查询qq飞车手游的大区 md手机大航海时代