babyrop
白给题,直接ret system就行了
name
题目一开始bin中存在很多堆,通过这些堆可以泄露libc以及heap地址
edit函数中存在off-by-null,并且add函数中通过0x20的堆来来管理分配的堆块,思路是overlapping
得到任意地址写,然后改free_hook 为 setcontext + 53,setcontext需要满足释放的堆的地址 + 0xa0 = orw链内容的地址
0xa8 为 一个ret汇编指令的地址,正好对应frame.rsp 和 frame.rip,然后劫持rip到payload就可以了详情看exp
1 | from pwn import * |
nologin
64位保护就开了FULL relro,这个题不是很难,比赛的时候也没怎么看(大意了x,而且还有rwx段
禁用了execve,功能2中存在溢出,可以修改rbp以及rip,通过将rip覆盖为read,可以向栈上面读入shellcode,然后
call,rsi,就能通过布置在栈上的shellcode,将栈迁移到rwx段上,然后直接orw就可以了(需要注意的一点是注意./flag的地址)
1 | from pwn import * |
size = 0x20 ad = 0x90
size = 0x30 ad = 0x98
size = 0x600 ad = 0x98 + 0x2f0
还有几个题找不到wp,算了,复现一下别的比赛