[ACTF2020 新生赛]BackupFile 1
Web常规题目
首先尝试查找常见的前端页面index.php之类的,没找到
题目有个“BackupFile”——备份文件
尝试用工具遍历查找相关的文件
御剑没扫出来,搜索搭建好dirsearch后,扫出来的index.php.bak
扫描工具dirsearch-master非常详细使用方法
直接去掉bak后缀,拿到了index.php页面的代码
这里我们输入的变量key是字符串
key在判断语句前进行了一次类型强转
intval()会强制取出字符串中的连续的整数
intval() 转换字符串类型时,会判断字符串是否以数字开头
如果以数字开头,就返回1个或多个连续的数字
如果以字母开头,就返回0
单双引号对转换结果没有影响,并且 0 或 0x 开头也只会当做普通字符串处理。
PHP intval()函数详解,intval()函数漏洞原理及绕过思路
这句 if($key == $str) 中,== 在PHP中是弱类型比较,自动进行数值比较
当两个操作对象都是 数字字符串, 或一个是数字另一个是 数字字符串, 就会自动按照数值进行比较。 此规则也适用于 switch 语句。
当比较时用的是 === 或 !==, 则不会进行类型转换——因为不仅要对比数值,还要对比类型。
PHP:比较运算符
str开头为‘123’,!is_numeric()的存在,直接输入key=123,尝试
成功