2024御网杯线上Pwn方向题解
ASM
Checksec检查保护
基本上保护都关闭了
64位ida逆向
程序只有一段,并且返回地址就是输入的数据,看起来就是srop了,找一下可以用的gadget
通过异或清空rax值,然后通过异或ecx和1,异或rax和rcx即可增加rax的值,同理左移一位同样可以增加rax的值,将rax增加到0xf然后打srop,程序还给出了/bin/sh
EXP:
1 |
|
Ret
C****hecksec 检查保护
基本上也是啥都没有开
那么直接64位ida逆向
程序主要是播散时间种子,然后随机数取值在0-160之间,当大于等于144时候才会溢出到返回地址,因此进行栈迁移,同样控制了rbp就可以控制rdx
那样就可以一直溢出了,然后打ret2libc,当然随机数需要一点运气
EXP:
1 |
|
normal pwn
看名字就知道可能是异架构
Checksec 检查保护
Arrch架构,保护全开
Ida逆向一下
初看是一个堆题目
上来给了stderr地址,那么可以得到elf的基地址
Show函数没有格式化,存在格式化字符串漏洞
同样存在后门
那么思路很清晰通过格式化字符串泄露stack地址,然后再修改返回地址为后门
效果如下
EXP:
1 |
|
no fmtstr
Checkse检查保护
没有开pie和got全保护
64位ida逆向
是个堆题目,先把函数名改了
申请堆块有限制,大小在largebin范围内
Free函数存在UAF
存在后门
还有一点就是做了检查,导致不能伪造stderr等结构体
那么可以通过largebin泄露 libc和heap地址,然后通过largebin attack 修改 mp_结构体,那么就可以free chunk进入到tcachebin里面,然后劫持指针修改got表
这里发现从write 或者setbuf的got开始修改效果好一点,不然可能由于地址问题会报错,期间会覆盖system got表,注意不要覆盖了。
1 |
|