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
最终结果