0x00 前言
刷到一道shellcode受限制的题目,自己尝试写shellcode,试了半天不行,最后查阅WP了解到有相关工具…..
特地记录一下
0x01 程序分析
1 | Arch: amd64-64-little |
由于0x124D处的call指令导致F5反编译失败。
只能看汇编了。
根据汇编大概写出伪代码
1 | 输出 "Show me your magic!" |
而且NX保护没开,所以向buf写入符合要求的shellcode即可。
0x02 Do it!
查阅一番资料以后
找到一篇非常不错的文章,虽然没能让我解出这道题目,但是从中学到不少姿势。
去尝试了使用shellcode_encoder
生成符合要求的shellcode,结果生成的shellcode里面依然含有不在题目要求范围内的字符。
1 | Python 2.7.12 (default, Jul 21 2020, 15:19:50) |
1 | $ python main.py shellcode_x64 rax |
最后了解到使用alpha3
可以生成指定要求的shellcode,rax表示指向shellcode的寄存器(这道题是call rax,也就意味着rax是指向shellcode的)
1 | $ python ALPHA3.py x64 ascii mixedcase rax --input='shellcode_x64' > x64_out |
…然后send(shellcode)就行了…
0x03 完整EXP
1 | from pwn import * |