陇原战疫2021网络安全大赛-pwn-wp
目录
陇原战疫2021网络安全大赛-pwn-wp
今天正好有事情跟比赛冲突了,回到家已经八点多,花了一个小时左右做了三道pwn
题,都是常规题。第四题忙活了半天没啥进展,想想还是先把前三题的wp
写了。这里总结下每道题的解题思路:
bbbaby
:题如其名- 首先修改
__stack_chk_fail@got
为puts@plt
,只要能继续往后执行main
函数就行 - 利用
main
函数栈帧的溢出泄露出libc
地址 - 修改
atoi@got
为system
,执行下get_int
,输入/bin/sh
即可获得shell
- 首先修改
Magic
:这题甚至都不需要给libc
。题目加了很多无用的分支代码,需要花点时间分析下,其实题目很简单。- 有个空闲的
0x230
,应该是fopen
分配出来的IO_FILE
结构体。刚好能分配5
个0x70
。同时伪造一个0x70
的fastbin chunk
的头。 - 利用
edit
部分写修改fd
为伪造的chunk
- 分配到
fake chunk
- 利用
edit
泄露出flag
- 有个空闲的
h3apclass
:libc-2.31
下的off by one
与setcontext+61
利用- 堆风水,获得一个
unsorted bin chunk
并制造overlapped chunk
- 爆破
4bit
,概率为1/16
。利用tcache bin
分配到_IO_2_1_stdout_
结构体上面,泄露libc
地址 - 同样的方式泄露
heap
地址。也可以直接用__free_hook
附近的区域打,这样就不需要泄露堆地址 - 利用
tcache bin attack
修改__free_hook
为mov rdx, qword ptr [rdi + 8]; mov qword ptr [rsp], rax; call qword ptr [rdx + 0x20]
- 最后用
setcontext+61
执行mprotect
,然后跳转执行cat('/flag')
的shellcode
读取到flag
- 堆风水,获得一个
bbbaby
checksec
漏洞点
任意地址写:
main
函数的栈溢出:
由于有canary
,所以需要改掉__stack_chk_fail@got
的内容
exp
|
|
远程打:
Magic
checksec
给的libc
版本为2.23
漏洞点
UAF
两处:
exp
|
|
远程打:
h3apclass
checksec
保护全开,然后google
了一下,libc
版本为2.31-0ubuntu9.2_amd64
。
漏洞点
exp
|
|
然后加一个shell
脚本跑一会儿就能拿到flag
了。
|
|
远程打:
引用与参考
1、My Blog
2、Ctf Wiki
3、pwncli
Buy me a coffee~
支付宝
微信