mrctf2020_shellcode

程序逻辑
打印“Show me your magic!”
从buf中读取0x400字节的内容
eax存放读取的字节数,与0比较,大于0则跳转到loc_11D6,否则退出程序
1
2CMP leftOp, rightOp
JG function ;大于跳转(left>right)loc_11D6: 将写入的内容地址给rax,然后调用执行
PWN
查看保护

编写脚本
- 使用pwntools生成shellcode
1 | from pwn import * |
- 使用自己编写的shellcode
1 | from pwn import * |
调试
- 断点打在call rax那


- vmmap查看程序基址(0x55654d65e000)
- 加上偏移(0x11dd)就是call rax地址
- 打好断点后发送payload,可以发现已经断在call rax处

- 回到调试界面,s单步进入函数查看发现shellcode已经被写入函数

- 一直往下走,直到发现此时已经启动一个新程序/bin/dash,说明已经拿到shell

结果
- 使用pwntools生成的shellcode

使用自己编写的shellcode
单步进入函数后发现也成功写入

同样的也能启动/bin/dash

最终结果
