1 | $ seccomp-tools dump ./pwn |
如题目,禁用了system,所以onegadget就用了不了,还是第一次在堆题目上遇到orw的
程序功能:
1 | 1.AddNote |
在addnote功能中自己定义的read函数中存在两个字节的漏出,这是题目唯一的洞,其它功能正常。
1 | // 溢出两个字节 |
那么,先漏泄地址,没有show函数,所以只能攻击IO_file,就利用这两个字节的溢出来构造chunk
大概的思路就是先申请4个chunk(0x70,0x80,0x70,0x70),利用溢出的两字节修改chunk1为0xf0,这样chunk2就被chunk1包住,再free(1),free(2),malloc(0x80),就能将main_arena+88
写到free状态的chunk2,再修改低两字节到_IO_2_1_stdout_
上方
1 | add(0x68,'a') |
接下来因为程序禁用了system,onegadget用不了,通过EX师傅学到了一种新姿势
接下来可以将free_hook填写成setcontex+53
,再进行SROP调用mprotect获得一段可执行的段,再shellcode读出flag
exp:
1 | #coding:utf-8 |