(另一个)返回Libc攻击:赢得';t Segfault或返回带有恶意输入的Libc。但在GDB工作
我想了解返回libc攻击是如何工作的,因此我编写了一个易受攻击的程序,以便将函数的返回地址更改为(另一个)返回Libc攻击:赢得';t Segfault或返回带有恶意输入的Libc。但在GDB工作,c,security,buffer-overflow,libc,C,Security,Buffer Overflow,Libc,我想了解返回libc攻击是如何工作的,因此我编写了一个易受攻击的程序,以便将函数的返回地址更改为system()。但是,该程序似乎没有调用system(),而是干净地退出 先决条件 -我正在使用Debain挤压 -我已禁用地址随机化,包括: echo 0 > /proc/sys/kernel/randomize_va_space 易受攻击的代码 使用GDB,我断言: /bin/zsh是@0xbffff9b9 system()is@0xb7ed0000 exit()is@0xb7ec60f
system()
。但是,该程序似乎没有调用system()
,而是干净地退出
先决条件
-我正在使用Debain挤压
-我已禁用地址随机化,包括:
echo 0 > /proc/sys/kernel/randomize_va_space
易受攻击的代码
使用GDB,我断言:
/bin/zsh
是@0xbffff9b9
system()
is@0xb7ed0000
exit()
is@0xb7ec60f0
72
zero、exit、system和指向/bin/zsh
的指针中按以下顺序使用它:
printf "%072x\xf0\x60\xec\xb7\x00\x00\xed\xb7\xb9\xf9\xff\xbf" | ./vuln
该程序不会segfault或执行/bin/zsh
在GDB中
有趣的是,如果我更改SHELL=“/xin/zsh”
,并在gdb中执行它,那么系统调用将起作用:
Cannot exec /xin/zsh
因此,我的问题是:
(我已经读过了)
你在哪个站台?也许您需要
-O0
来禁用内联?它是debian squeeze x86,在virtualbox中运行。当您在gdb中运行时,bt
在segfault之后返回什么?可能在对齐堆栈边界方面存在问题。您是否尝试过设置-mprefered stack boundary=2。。。这对于让您的漏洞发挥作用至关重要
printf "%072x\xf0\x60\xec\xb7\x00\x00\xed\xb7\xb9\xf9\xff\xbf" | ./vuln
Cannot exec /xin/zsh