成都黑客网:非栈上格式化字符串缝隙使用技巧
关于Linux栈上格式化字符串缝隙的运用网上已经有许多讲解了,但对错栈上的格式化字符串缝隙很少有人介绍。这儿首要以上周末SUCTF竞赛中playfmt标题为例,具体介绍一下bss段上或堆上的格式化字符串运用技巧。
0x01基础知识点
格式化字符串缝隙的具体原理就不再具体叙说,这儿首要简略介绍一下格式化参数方位的核算和缝隙运用时常用的格式字符。
参数方位核算
linux下32位程序是栈传参,从左到右参数次序为$esp+4,$esp+8,...;因此$esp+x的方位应该是格式化第x/4个参数。
linux下64位程序是寄存器加栈传参,从左到右参数次序为$rdi,$rsi,$rdx,$rcx,$r8,$r9,$rsp+8,...;因此$rsp+x的方位应该是格式化第x/8+6个参数。
常用的格式化字符
用于地址走漏的格式化字符有:%x、%s、%p等;
用于地址写的格式化字符:%hhn(写入一字节),%hn(写入两字节),%n(32位写四字节,64位写8字节);
%$type:直接效果第number个方位的参数,如:%7$x读第7个方位参数值,%7$n对第7个参数方位进行写。
%c:输出number个字符,合作%n进行恣意地址写,例如"%{}c%{}$hhn".format(address,offset)便是向offset0参数指向的地址更低位写成address。
0x02非栈上格式化字符串缝隙运用
一般来说,栈上的格式化字符串缝隙运用过程是先走漏地址,包含ELF程序地址和libc地址;然后将需求改写的GOT表地址直接传到栈上,一同运用%c%n的 *** 改写入system或one_gadget地址,最终便是绑架流程。可是关于BSS段或是堆上格式化字符串,无法直接将想要改写的地址指针放置在栈上,也就没 *** 完成恣意地址写。下面以SUCTF中playfmt为例,介绍一下常用的非栈上格式化字符串缝隙的运用 *** 。
例题
标题阐明
程序缝隙点比较显着,直接写了一个循环的printf格式化缝隙,而输入的数据是存储在buf指针上,buf则是坐落bss段中地址为0x0804B040。
int do_fmt(void)
{
int result; // eax
while ( 1 )
{
read(0, buf, 0xC8u);
result = strncmp(buf, "quit", 4u);
if ( !result )
break;
printf(buf);
}
return result;
}
.bss:0804B040 public buf
.bss:0804B040 ; char buf[200]
.bss:0804B040 buf db 0C8h dup(?) ; DATA XREF: do_fmt(void)+E↑o
查看一下程序的维护,可以发现敞开了RELRO,也便是无法改写GOT表,所以思路便是直接修正栈上的回来地址,return的时分绑架流程。
走漏地址
首要需求得到当时栈的地址和libc的基地址,这些地址可以很轻松的在栈上找到,其间esp+0x18寄存了栈地址,esp+0x20寄存了libc的地址,可以得到分别是第6个参数和第8个参数,直接传入%6$p%8$p即可得到栈地址和libc地址。
恣意地址写
这儿首要需求处理的便是怎么即将改写的地址放在栈上。完成恣意地址写需求依靠栈上存在一个链式结构,如0xffb5c308->0xffb5c328->0xffb5c358,这三个地址都在栈
“北京高级伴游-【郑红萍】” 涉及语言:英语,普通话期待伴游气质:极品模特,气质少妇身高:165cm所在地:深圳全国模特经纪人给您的忠实建议 一定要相信经纪人哦,如果您对本单有任何疑问,都先记得和经纪...
在我们的账户没有常见地域登录,手机游戏内存有异常物件买卖等状况下都是会开启进到安全中心,qq安全中心打开以后,登录新机器设备必须手机上认证,尽管很安全性,可是很繁杂,那麼进到安全中心之后怎么办呢?下边...
织梦CMS是集简朴、结实、天真、开源几大特点的开源内容管理系统,是海内开源CMS的领先品牌,现在程序安装量已达七十万,跨越六成的站点正在使用织梦CMS或基于织梦CMS焦点开发. 思源资源网:分...
新成立公司资产比较有限,因而不可以在品牌营销上资金投入过多。这时候,假如你能有一篇好的推广软文,将对提高公司的企业形象和名气,推动公司的营销推广有很大的协助。使我们看一下有什么方法能够写一篇好的软...
前几天刚推一个趣分类,大概在9月8日前会开放买卖,今天又出一个类似答题项目:么么答。注册实名,需要填写姓名,SFZ,支付1.5米保护费,可得“小试牛刀”,天天做3个选择题即可完成任务,一天发生0.6枚...
我写过很多爱情文章,也谈过两场恋爱,知道什么才是爱,什么才是暧昧。两个人在一起能够感受到对方的美好,会为了他去变得更好,这就是是爱,而喜欢一个人也也是这样的。所以说喜欢一个人时会有的5种感觉,你是不是...