首页
社区
课程
招聘
[原创]【CTF-PWN】pwnable.tw_dubblesort
发表于: 2018-6-6 09:34 7517

[原创]【CTF-PWN】pwnable.tw_dubblesort

2018-6-6 09:34
7517

首先运行一下大概了解程序的流程:

首先是传入一个name
而后需要我们指出需要排序的数字个数
而后需要我们依次输入需要排序的数字
最后程序给出排序好的result
不过这里发现一个问题,有些名字后存在其他字符(类似乱码)
猜测这里应该是字符串00结尾没有处理好而泄露了名字后的部分数据
先记下这个问题
下面载入IDA分析:

可以看出这里:

下面:
输出"What your name :":

从输入流读入0x40长度(输入流结尾自动停止读入)的字节到esp+8Ch+buf处:

输出"Hello %s,How many numbers do you what to sort :":

使用scanf读入一个unsigned型数(所需排序个数):

接下来再调用scanf读入相应个数的unsigned并调用一个冒泡排序:sub_5662B931
最终输出结果

首先就是开始时候的name可以泄露栈内数据:
当我们输入:"aaaa"
程序输出:

看一下栈内数据:

可以看到buff内数据是aaaa+'\n',而后面没有对字符串结尾加上00进行截断,导致后面的FFBA4B00上的数据在换行之后也输出了,直到遇到FFBA4804处的"\x00"

测试代码:

当输入一个非法字符时,其可能会因输入流问题直接输出栈上数据:

在程序中测试:

我们输入前栈中v13(保存需要排序的数字)处的数据分布:

排序输出后:

可以看到我们这里输入"+"并不改变栈内数据,而是对其中的数据重新排序

首先使用chechsec看一下程序的保护机制:

可以看到全部开启
考虑到调试过程发现其加载了libc库以及:

这里我们可以利用ret2libc执行system("/bin/sh")来获取shell
我们需要:

利用题目给出的库文件:

所以:

找到了:

所以:

若要获取基地址,便要得到一个相对基地址偏移量固定的地址
而能泄露数据的只有name和最后的排序处
但排序处会直接结束进程
我们需要利用排序前的scanf来布置栈空间
所以这里只能利用name泄露buf后某个栈内地址
动态调试看一下name后的栈内数据:

可以看到第七和第八个数据都在libc中
接着调试后锁定第七个数据:
看一下这次载入libc的地址:

第七位地址的相对位移:

注意:这里的偏移地址是相对于本地的libc-2.23.so文件

看到这里的对应偏移位置是:

对应远程的libc文件的.got.plt的偏移地址为:

这里需要注意:
栈内数据写入后会被排序
所以我们要让排序后的栈内:

一般情况下这几个数便是从小到大排列(除非canary随机到很大)
所以我们:

不过当输入字符来利用name获得.got.plt地址时总是出错
调试后发现,这个地址末位总是00,造成了截断,所以需要多输入一位来使用换行符(chr(0xa))来覆盖这里(在后面计算地址的时候再减去0xa)

 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-2-2 13:59 被admin编辑 ,原因: 图片本地化
上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 118
活跃值: (118)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
你们都不知道  pwnable.tw的规则吗?
2018-6-10 17:24
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
3
此恨不关风月 你们都不知道 pwnable.tw的规则吗?
这世界上本没有路,走的人多了,也便成了路
                                                                                                                    ——鲁迅真说过
2018-6-10 18:55
0
雪    币: 118
活跃值: (118)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
holing 这世界上本没有路,走的人多了,也便成了路 ——鲁迅真说过
什么意思?
2018-6-10 19:02
0
雪    币: 287
活跃值: (40)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
知道啊,不过这几题分比较低......
最后于 2018-6-17 17:40 被迷麟编辑 ,原因:
2018-6-11 18:51
0
游客
登录 | 注册 方可回帖
返回
//