东软杯-pwn-justdoit

本文详细介绍了如何分析一个没有明显malloc、free、new的pwn题目,通过深入汇编代码找到栈溢出漏洞,并利用该漏洞实现执行流劫持。作者展示了从泄露libc地址到构造payload获取shell的完整过程,涉及知识点包括ROP链、libc基址计算及利用技巧。

第一届东软杯pwn-justdoit

一直等着比赛第二天有pwn题续命,可惜,下次比赛目标pwn题拉满!

ida分析通过伪函数分析发生没有什么漏洞,也没看到malloc、free、new关键字,那么一定是栈题、函数中也没发现缓冲区溢出,那么就找程序中一些奇奇怪怪的代码配合汇编一起看。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CU3UxYOP-1639138860359)(C:\Users\54622\AppData\Roaming\Typora\typora-user-images\image-20211210190159821.png)]

最后在main汇编代码里面发现了这个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4sidVr3-1639138860361)(C:\Users\54622\AppData\Roaming\Typora\typora-user-images\image-20211210190418140.png)]

加上测试程序时报了段错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MBwHKB6X-1639138860362)(C:\Users\54622\AppData\Roaming\Typora\typora-user-images\image-20211210190524391.png)]

那么程序漏洞利用点必是这里无疑,既然rbp的值可以控制,因为rbp与程序执行流密切相关,那么我输入一个地址将rbp置于它的上方即可达到劫持执行流。因为程序没有后门,嗯,保护措施如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ydrtpHmM-1639138860363)(C:\Users\54622\AppData\Roaming\Typora\typora-user-images\image-20211210190839038.png)]

思路:可用got表劫持,libc泄漏

ok,name后面的buf可以输入执行地址,frends后面的buf可以改变执行流,以下简称buf1、buf2.

buf1只能输入0x18那么刚好就是3个地址,64位中ROP泄漏libc就是 pop_rdi + @got + @plt + ret_addr,即可leak,那么很明显这里放不下,那么就需要拆分执行。

call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP

这题我们调整rep的值指向rsp,那么它会将rsp的下一条指令pop ip,那么此时rbp也会指向rsp的值经过leave后会将这个值保存至rbp寄存器,此时程序误以为回到了调用者函数,然后又会重用之前的rbp,嗯,ok

payload:

sa('name?',p64(main) +p64(main))
sa('frends??',str(-0x20)) #指向第二个参数  那么rbp = main ,ret = main

sa('name?',p64(prdi)+p64(puts_got)+p64(puts_plt))
sa('frends??',str(-0x28))

程序先执行一遍main函数并把main函数地址保存至rbp,然后执行got表泄漏后执行rbp的值,那么程序就又回到了main。

ok,这一次直接getshell


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值