首页
社区
课程
招聘
[原创]ROP Emporium writeup
发表于: 2020-3-14 08:15 8660

[原创]ROP Emporium writeup

2020-3-14 08:15
8660


ROP Emporium:

https://ropemporium.com/


分析

运行看看


计算一下栈的大小,得到 44


在 ret2win 这个函数里面有个后门,输出了 flag.txt,地址是:0x8048659,只要把返回地址覆盖成这个就可以了



exp



分析

GDB 调试:得到偏移


IDA 分析,依然是有个后门的,地址:0x400811



exp


它自己带的 flag 确实是写的 32 位



分析

计算偏移:44


IDA打开搜索字符串,发现 data段有cat flag



同时有 system 的 plt 地址


exp



分析

gdb计算 偏移40



照样用



因为 64 位的传参要在寄存器里面,用ROPgadget,找一下pop rdi 的



exp



题目说要按照 call callme_one(),callme_two(),callme_three() 的顺序调用执行

To dispose of the need for any RE we'll tell you the following:You must call callme_one(), callme_two() and callme_three() in that order, each with the arguments 1,2,3 e.g. callme_one(1,2,3) to print the flag. The solution here is simple enough, use your knowledge about what resides in the PLT to call the callme_ functions in the above order and with the correct arguments. Don't get distracted by the incorrect calls to these functions made in the binary, they're there to ensure these functions get linked. You can also ignore the .dat files and the encrypted flag in this challenge, they're there to ensure the functions must be called in the correct order.

分析

计算偏移:44


然后想要按照要求去调用他给的三个 call,那三个 call 是在附带的 libc 里面的定义的





根据这三个函数的定义

call_one 的三个参数应该是1、2、3

call_two 的三个参数应该是:1、2、3

call_three 的三个参数应该是:1、2、3


需要三个 pop 来把参数占用的给平衡掉,这样才能保证返回到下一个 call


exp



分析


x64 中的前六个参数依次保存在 RDI, RSI, RDX, RCX, R8 和 R9 中


用 ROPgadget --binary callme --only 'pop|ret'

完美!gadgets:0x401ab0



IDA 看一下函数地址



exp



分析

偏移 44


没有可以用的 /bin/sh 字符串,有 system,可以用 ret2libc,但这个题目目的不在这,尝试自己去写到内存里然后再调用

参考:https://www.jianshu.com/p/d385e23b2a94  tql!


通过 ROPgadget 找到了要用的两段 gadget



说一下思路:通过 pop edi 和 ebp,把 bss 段的地址和 '/bin' (因为只能放 4 字节),放到这俩寄存器里面

然后通过:mov [edi],ebp 把字符串放到 bss 段,这样放两次,就放完了 "/bin/sh" 了,就可以用 system 来拿到 shell 了


exp



分析

偏移:40


然后用 ROPgadget 看一下 gadgets,这俩不错



然后 IDA 看一下:



同时别忘了,对于 64 位的来说,还需要一个 pop rdi ret 这样的 gadgets


exp



分析

偏移大小为 44


IDA 看到在 pwnme 函数里面调用了一个 badchars 的函数




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-3-14 08:17 被yichen115编辑 ,原因: 补充题目网址
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
看不懂
2020-3-15 02:54
0
游客
登录 | 注册 方可回帖
返回
//