You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROP链中execve系统调用无输出问题求助

排查ROP调用execve无输出问题

尝试通过ROP gadget链调用execve("/bin/cat", "filename", NULL),能单步执行系统调用,但无输出也无报错,无法定位问题。

调试关键信息

最后执行的ROP Gadget

(gdb) x/20i $pc
=> 0xf7dfb8ae:  call   *%gs:0x10
   0xf7dfb8b5:  pop    %ebx
   0xf7dfb8b6:  ret    
   0xf7dfb8b7:  lea   

寄存器状态

(gdb) info registers
eax            0xb                 11
ecx            0xffffde1a          -8678
edx            0xffffde19          -8679
ebx            0xffffde11          -8687
esp            0xffffde60          0xffffde60
ebp            0xffffde48          0xffffde48
esi            0xf7fbb000          -134500352
tedi            0xf7fbb000          -134500352
eip            0xf7dfb8ae          0xf7dfb8ae
eflags         0x202               [ IF ]
cs             0x23                35
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x63                99

内存数据

字符串查询结果:

(gdb) x/s $ebx
0xffffde11: "/bin/cat"
(gdb) x/s $ecx
0xffffde1a: "/home/victim/flag.txt"
(gdb) x/s $edx
0xffffde19: ""

字节级内存布局:

(gdb) x /32x $ebx
0xffffde11: 0x2f    0x62    0x69    0x6e    0x2f    0x63    0x61    0x74
0xffffde19: 0x00    0x2f    0x68    0x6f    0x6d    0x65    0x2f    0x76
0xffffde21: 0x69    0x63    0x74    0x69    0x6d    0x2f    0x66    0x6c
0xffffde29: 0x61    0x67    0x2e    0x74    0x78    0x74    0x00    0x00

问题排查与修复方向

  1. 修正execve参数格式
    execve的第二个参数要求是字符串数组的指针,而非单个字符串指针。正确的数组布局应在内存中构造:

    [0xffffde11]  # "/bin/cat"的地址
    [0xffffde1a]  # "/home/victim/flag.txt"的地址
    [0x00000000]  # NULL终止符
    

    将ecx指向这个数组的起始地址,而非直接指向文件名。

  2. 第三个参数改为NULL指针
    当前edx指向空字符串的地址(0xffffde19),但execve要求第三个参数是NULL指针(0x00000000),而非空字符串地址。需将edx设置为0。

  3. 验证系统调用入口
    执行x/x %gs:0x10查看GS段偏移0x10处的指针,确认其指向合法的系统调用入口(如int 0x80的代码地址)。若该指针无效,系统调用无法正确触发。

  4. 处理标准输出问题
    若execve执行成功但无输出,可能是子进程的标准输出未关联到当前终端。可在ROP链中先调用dup2将标准输出重定向到当前进程的fd,或改用system("/bin/cat /home/victim/flag.txt")简化参数构造(需找到对应gadget)。

内容的提问来源于stack exchange,提问作者nkt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:40:35