不可执行内存页保护攻击--return to libc attack

本文介绍了如何执行Return to libc攻击,包括规划溢出布局、关闭地址随机化、查找系统函数和/bin/sh地址、构造溢出字符串以及提升权限的步骤。通过示例代码和GDB调试,详细解析了攻击过程。
摘要由CSDN通过智能技术生成
@1. 基本思路
    控制eip使程序流程流向glibc函数,而不是shellcode所在的堆栈上。system(),exit()……
@2. 规划如下:
                缓冲区  --> 溢出
                ebp     --> 溢出
                eip     --> system()地址
                vars    --> 填充内容(一般是4个字节,作为system()返回之后的eip)
                        --> '/bin/sh'
@3. write vuln2.c and compile it with order 'gcc -mpreferred-stack-boundary=2 -fno-stack-protector -o viln2 vuln2.c '  去掉"-z execstack"是加上堆栈不可执行。
@4. 关闭地址随机化,echo 0 > /proc/sys/kernel/randomize_va_space
@5. find where is glibc's system() and where is "/bin/sh"
    在gdb里面寻找: (gdb) print system
                    $1 = {<text variable, no debug info>} 0xb7e52260 <__libc_system>
    使用程序search.c寻找:
                    编译search.c出错:在函数‘main’中:
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值