题目来源:ACTF2020 新生赛
题目名称:BackupFile1
打开网页
根据题目我们猜测此网站可以通过bak格式来进行代码审计,这里可以通过目录扫描或者直接index.bak或者index.php.bak,这里我们发现index.php.bak网站让我们下载软件
通过n++或者其他编译软件查看源代码,这里我转换为TXT格式查看
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
这里我们进行php代码审计:
弱类型比较
==:先将字符串转换同类型在进行比较
===:先判断两种字符串的类型是否相同在进行比较
isset()函数检测变量是否已被设置并且非NULL
is_numeric()用于检测变量是否为数字或者数组字符串,这里说明key如果不是数字的话将退出执行并输出Just num
intval()可以获取变量的正整数值,进行数据类型转换,将字符串的变量转换为整数类型
因为$key==$str 属于弱比较 key=123获得flag
payload:
/?key=123