buuctf - [ACTF2020 新生赛]BackupFile
题目考点
源码泄露
思路
正常如果有源码泄露,用字典可以跑出来,buu平台禁止发包频繁,参考wp找到源码.
审计源码,
<?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!";
}
key必须为数字,当key为数字后,与str比较,因为是弱类型比较,php会将string转化为int进行比较,从第一个字符开始后面的字符会被截去。
源码路径
[题目路径]/index.php.sak
payload
?key=123
PHP比较(字符串-字符串)
- 均为数字字符串的a、b,通过数字字符串大小进行比较
- 均为字符字符串的a、b,用过ascii码进行比较
- a、b位数字,字符串中内容为aeb、0xab理解成科学计数法、进制进行比较
- a数字,b纯字母字符串,b即为0去比较
- a数字,b数字字母字符串,123abc->123,b123abc->b->0??????【学php后再检测这部分的正确性
- intval(函数)