赛后马后炮---canary+字符串泄露+ROP构造

分析

二话不说,直接拉到IDA,然后F5走起。

之后我们跟进
main.png

recvid.png

很明显,这个是接收ID的,其中sub_400ABE函数应该就是接收函数了。我们看一看
recv.png
果然,大概意思就是两个参数,一个字符串地址,一个接收的长度。然后for长度,用read接收字符,遇到n就break。

之后跟进第二个函数,是接收文本的,发现上面的recv长度可控。
大概逻辑就是接收文本长度,然后接收文本,然后把文本返回
recvstory.png

然而因为接收的长度是严格按照我们输入的大小来控制的,在接收函数那似乎并不能溢出。
但是!看到第一个参数s。我们这个参数是一个字符串地址,往这里写入的长度是我们可以控制的,那么,这个s的内存是在哪里申请的呢?
我们往上找,在接收story长度的那里
mems.png
size.png
看到了这个20ull
只要我们输入的长度大于这个20ull,理论就能覆盖返回地址。

虽说这里判断接收的size,如果>128,就默认是1024ll,但是我们看小于0,并没有判断大小
if.png
所以我们只需要在前面加个符号就能绕过判断了。
典型的ROP,之后就是我们要获取到libc地址。

代码直接使用了printf(%s),就是和明显的字符串泄露了
在此之前,先用checksec分析一下。
TIM截图20190412003915.png
发现开启了canary。这时候就需要泄露canary地址了

打开IDA/gdp,给printf下断点,执行。然后查看栈。

找到xor ebp,ebp

TIM截图20190412004130.png

数一数距离printf的栈顶有多远,这里是15,也就是cannary的地址了。

接下来得构造ROP调用system来执行我们的代码,就得用ROP构造了,不过在此之前我们得先找到libc的地址来构造。

因此我们先找个函数来计算libc基地址。到时候再更具基地址查找版本,再查找system函数的偏移就行了。

首先我们先用ldd来查看libc,got地址或者直接使用pwntools的elf功能。

大致思路就是这样,好困我先睡觉去了,明天找时间再写

代码

Tags: none

终于给blog上了个https

虽然说添加https并不麻烦,但是我害怕的是博客中几百个资源连接,哇,想想就可怕。所以一直咕咕咕+拖延到现在。
知道今天,心理下定决心了,上了个https。
诶嘿?竟然不用改资源,开心.jpg

Tags: none

恰到好处的萌:《邂逅之后的5分钟是我的》游戏安利

转载信息

转载于 ~魔法使之家~: 点我跳转

正文

每年都有一个或者多个游戏成为gal圈子的焦点,今年也不例外,正如这几年年的少女领域(指汉化时间),千恋万花,天天天等等,而18年在我心中认为最舒服的,正式这款 《出会って5分は俺のもの! 時間停止と不可避な運命》。

_cover.jpg

“大哥哥~!大哥哥~!”

有一天早晨,在通往车站的路上,忽然背后传来这样的声音。

“叫的人就是你哦~!大哥哥!”

这时,一个散发着诡异氛围的娇小少女出现在我面前。

明明时值天气炎热的初夏,而这名少女仿佛不惧炎热似的,身穿以黑色为主调色彩的衣服,全身包裹得严严实实的。

“觉得很无聊,我认为你也是这样想的吧。”

面对着为此惊讶的我,少女给我展现了另一件令我更加吃惊的景象。

正朝着车站的走去的人流,停止了行走的动作,这不是因被叫停止行动,而是犹如被定身一般,纹丝不动。

——这一切犹如时间停止了一样。

这是骗人的吧!?怎么可能?难道这是个整蛊节目?

但是在为此思索着的我忽然瞄到那同样纹丝不动的猫跟小鸟的时候,也不得不承认这个事实。

“这个是『アトロポスウォッチ 』(Atropos watch)”,我就是利用这个表来停止时间的。”

“你看,表上的秒针还在动吧,只要表上还没走够5分钟,时间就会一直停止的哦~!”

“也就是说这个指针走过5周的话,时间就会回复正常?”

把这奇妙的事情告诉我想干嘛?而少女把这表硬塞给我转身就跑了,并说道:“感到很无聊吧,就利用这个表让你无聊的人生变得有趣起来吧~!”

——『アトロポスウォッチ 』(Atropos watch),就此归我所有了。

而在校园的喧嚣当中,为了摸到“光井瑠璃”同学的欧派,我启动了『アトロポスウォッチ 』(Atropos watch)的神奇力量。

这是改变我“黑濑悠真”一生的,第一次“时间停止”。

阅读全文...

Tags: none