欢迎访问Sunbet,Sunbet是欧博Allbet的官方网站!

首页Sunbet_新闻事件正文

关于客栈迁徙的研讨

b9e08c31ae1faa592019-02-1624

题目就在附件中,刚进坑PWN,向优秀的师傅冒着生命危险去学习,看到堆迁移的题目,觉得好笑,就总结一下:

通常,所谓的堆栈移位是指在堆栈溢出后缺少空间来组织负载,因此需要新的站点空间来组织负载。这就是堆栈移位的思想。
离开| ret的作用:mov, esp, ebp;流行ebp;受潮湿腐烂
完成基本思维的堆栈迁移:
开始ebp esp诱惑ebp本身,然后女人跑到另一个ebp藏身之处,特别是经历无论(尝试),再次发现离开| ret(神),再次见到ebp玉人ret能力,但ebp并运行到下一个ebp玉藏身之处,煮熟的鸭子飞认为这。
(我们称边疆客栈为新世界。)
1. 直接给新世界的钥匙:pivot(64位)
第一步是审查在开发协会中应采取的措施、应采取的战略和有用的资料:

关于客栈迁徙的研讨  第1张
关于客栈迁徙的研讨  第2张
看到是栈的溢出破绽,然则发明栈空间不敷写指令,又发明题目创建了个堆给你,应当能够好好应用这个堆完成我们想要的功用,一般来讲,当栈的空间不敷用时是写入bss段的,这里恰好能够用,就先用吧,接下来找有用信息:
先在第二个fget下断点爆破溢出栈巨细:
关于客栈迁徙的研讨  第3张
关于客栈迁徙的研讨  第4张
能够晓得,栈巨细为40(掩盖了ebp),接下来继承剖析找有用信息:

关于客栈迁徙的研讨  第5张
看来没有system和/bin/sh,有些迷,看到另有一个文件libcpovit.so,拖ida进去看看:
关于客栈迁徙的研讨  第6张
发明了我们想要的system函数,同时参数有用,就是直接获得flag,那末接下来就是要在povit中猎取这个ret2win的实在地点了,再找找信息:
关于客栈迁徙的研讨  第7张
关于客栈迁徙的研讨  第8张

发明了雷同的函数,思绪已对照清晰了:
起首让function函数实行一次,在got表中生成对应的实在地点,然后偏移量是应用在libc表中的偏移和实在表中的偏移雷同,先盘算出在libc表中ret2win和function之间的偏移。再用function实在地点+偏移地点=ret2win的实在地点。
剧本就能够写出来了:
1、盘算偏移:
关于客栈迁徙的研讨  第9张
2、实行一次猎取got表上的实在地点:
关于客栈迁徙的研讨  第10张
3、求ret2win的实在地点并挪用这个函数:
关于客栈迁徙的研讨  第11张
4、获得堆顶指针:
关于客栈迁徙的研讨  第12张
5、栈溢出操纵:
关于客栈迁徙的研讨  第13张
6、考证谜底:
关于客栈迁徙的研讨  第14张
完全的剧本:
关于客栈迁徙的研讨  第15张
关于客栈迁徙的研讨  第16张
总结:直接应用给出的钥匙(堆指针heap),胜利组织payload,实行,题目不大,其次应用xchg eax,esp的gadget,完成栈顶指针的“挟制”,使esp指向堆指针heap,实行堆内里的payload,进修到一个新姿态(本题64位由于有截断符0xa0,以是用不了leave;ret的gadget,以是应用xchg的要领间接完成)
二、打造通往新世界的钥匙:
依照套路,先搜检珍爱机制,拖进ida剖析逻辑,
关于客栈迁徙的研讨  第17张

关于客栈迁徙的研讨  第18张
由count的值可知,main函数只能实行一次,这就有些限定我们的操纵了,继承往下剖析,read读取0x40(64)个字节到buf0x28(40)的空间中,会溢出0x18(24)个字节,如许用来组织的paylode长度就很有限,那末基于上一题的履历,我们须要一个新的空间去写我们的payload,这里没有直接给出我们能用的空间(上一题有堆heap),那末我们就要本身去组织出这把钥匙,去bss段中去打造钥匙,在这里我们须要两把钥匙(也就是两个ebp),然后经由过程泄漏puts的实在地点来盘算system的实在地点,从而getshell,下面详细解答:
先看看栈巨细,爆破(掩盖ebp):
关于客栈迁徙的研讨  第19张
找能够用的gadget:
关于客栈迁徙的研讨  第20张
个中pop_ebx_ret作用是连结栈均衡,而leave_ret则是为了完成esp的跳转
拔取好了,就能够写payload了,起首是各个地点的盘算:

关于客栈迁徙的研讨  第21张
接下来是原始的栈举行溢出操纵:

关于客栈迁徙的研讨  第22张
经由过程leave_ret就会把esp勾引到buf1地点的假造栈去实行上面的payload,buf1上的payload内容为:

关于客栈迁徙的研讨  第23张
又再次由于leave_ret跳转到buf2地点的假造栈去实行上面的payload,buf2上的payload内容为:

关于客栈迁徙的研讨  第24张
本身画了个图,我们晓得esp是一步步地往上实行的,碰到leave_ret时跳转,用图示来看清晰详细的流程:

-------------------------------------

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

-------------------------------------

关于客栈迁徙的研讨  第25张

完全的payload以下:

关于客栈迁徙的研讨  第26张

关于客栈迁徙的研讨  第27张

关于客栈迁徙的研讨  第28张
考证:

关于客栈迁徙的研讨  第29张

总结:在bss段组织假造的栈空间,举行payload的组织,经由过程掌握ebp和esp的指向,掌握程序的实行流程,应用有限的栈溢出空间,完成更大的空间应用。

大总结:学会了两种要领:1、xchg eax,esp(ebx存的是假造栈的ebp地点,只需有这个gadget就能够用)2、leave_ret(没有截断标记比方0xa0,就能够用),举一反三,素质就是挟制esp到假造栈中去实行payload~

网友评论