Shellcode汇总
一、shellcode的查找和获取:
获取方式:可以通过linux/x86/sh/bash/execve/shellcode等等关键词来查找
二、shellcode的编码:
示例:
1 | #注释头 |
’import sys; sys.stdout.write(“shellcode”)’:这是导入包之后写入编码的shellcode。
由于msfvenom只能从stdin中读取,所以使用Linux管道符”|”来使得shellcode作为python程序的输出。
此外配置编码器为x86/alpha_mixed,配置目标平台架构等信息,输出到文件名为payload的文件中。
Shellcode的执行条件一般都是call Register,这里的BufferRegister设置是因为通过指令call eax调用shellcode,所以配置BufferRegister=EAX。最后即可在payload中看到对应的被编码后的代码。
三、shellcode的两段执行:
需要泄露RWX段的地址,读取泄露地址:
需要跳转jmp命令或者是return/call,但是return会pop eip,call会push eip,都会修改掉栈中的内容。如果shellcode的两段执行计算偏移地址的话,可能需要将这两个内容也计算进入。但是jmp就不会需要,是直接无条件跳转,所以大多时候选择jmp比较好。