关于客栈迁徙的研讨 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

关于客栈迁徙的研讨

申博_新闻事件 申博 178次浏览 已收录 0个评论

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

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

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

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

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

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

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

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

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

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

————————————-

申博网络安全巴士站

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

————————————-

关于客栈迁徙的研讨

完全的payload以下:

关于客栈迁徙的研讨

关于客栈迁徙的研讨

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

关于客栈迁徙的研讨

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

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


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明关于客栈迁徙的研讨
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址