可见字符shellcode
可见字符 shellcode 的简单介绍:
可见字符 shellcode 是一种在某些情况下非常实用的技术,特别是当程序对用户输入的字符串进行限制时。例如在只允许输入可见字符的情况下,就需要使用纯字符的 shellcode。
可见字符 shellcode 的原理:
可见字符 shellcode 的原理是使用纯字符对应的汇编指令来完成 shellcode 的编写。例如:ASCLL 字符’P’对应的汇编指令时 push rax,’Q’对应的指令时 push rcx,以此类推。
可见字符 shellcode 运用示例:
运用方法不难,我们直接用一道题目去解释可见字符 shellcode 的使用:
没有开启 NX,而且可以用 shellcode 栈溢出 shellcode,不过限制了输入的字符串必须可视化
首先我们先生成一个普通的 shellcode,文件名为 sc:
1 | from pwn import * |
将上述代码保存成 sc.py 程序并运行,> 指向的是保存的输出文件名
1 | python sc.py > shellcode |
使用 alpha3 工具将生成的shellcode转换为可见字符shellcode:这里 shellcode 指的是文件名称
1 | python2 ALPHA3.py x64 ascii mixedcase rax --input="./shellcode" |
这将生成一个基于rax寄存器的可见字符shellcode。
这里补充一点小知识:
1 | python2 - 用 Python 运行脚本 |
补充一下 32 位可视字符 shellcode 的操作:
1 | # 1. 基本 ASCII 编码(大小写字母) |
tip)这里我们可能需要用到工具 alpha3,没有的话可以执行命令下载一下:
1 | git clone https://github.com/TaQini/alpha3.git |
我们继续往下走,利用 read 函数栈溢出编写shellcode:
1 | from pwn import * |
更新: 2026-03-12 11:42:16
原文: https://www.yuque.com/idcm/wnemg9/nnpa7pgoc8f9glar