BUGKU_WEB_20201020
代码审计-extract变量覆盖
<?php
$flag='xxx';
extract($_GET);
if(isset($shiyan)) {
$content=trim(file_get_contents($flag));
if($shiyan==$content)
{
echo'flag{xxx}';
}
else
{ echo'Oh.no';
}
}
?>
一般代码审计,以我现在的水平来看最重要的就是变量,然后就是这个变量的处理过程。
那么这里的关键点就是shiyan和flag这两个变量了。
只要我们让他们一致就ok了。
123.206.87.240:9009/1.php?flag=&shiyan=

我们使用置空的方式让他们的值相等就ok了。
flag{bugku-dmsj-p2sm3N}
代码审计-strcmp比较字符串
<?php
$flag = "flag{xxxxx}";
if (isset($_GET['a'])) {
if (strcmp($_GET['a'], $flag) == 0) //如果 str1 小于 str2 返回 < 0; 如果 str1大于 str2返回 > 0;如果两者相等,返回 0。
//比较两个字符串(区分大小写)
die('Flag: '.$flag);
else
print 'No';
}
?>
就是get 用a和flag比较。
这里strcmp有一个bug就是如果比较的是数组的话,还是会返回一个0。
所以使用payload:?a[]=1

Flag: flag{bugku_dmsj_912k}
代码审计-urldecode二次编码绕过
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("
not allowed!
");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "
Access granted!
";
echo "
flag
";
}
?>
eregi函数判断如果id 中有hackerDj就输出 not allowed!
下面urldecode解码若 id = hackerDj 则输出flag
已知:浏览器会转一次码
% 转url编码 为 25%、 a 转码为%61
所以构造payload:?id=h%2561ckerDJ
获得payload:http://123.206.87.240:9009/10.php?id=h%2561ckerDJ

flag{bugku__daimasj-1t2}
代码审计-md5()函数
<?php
error_reporting(0);
$flag = 'flag{test}';
if (isset($_GET['username']) and isset($_GET['password']))
{
if ($_GET['username'] == $_GET['password'])
print 'Your password can not be your username.';
else if (md5($_GET['username'])===md5($_GET['password']))
die('Flag: '.$flag);
else
print 'Invalid password';
}
?>
本题的意思就是使username!=password&&md5(username)===md5(password)
看到是md5函数,简单搜索一下关于md5()的缺陷,发现,原来md5没有办法处理数组格式的。
然后构造一下payload:http://123.206.87.240:9009/18.php?username[]=1&password[]=2

Flag: flag{bugk1u-ad8-3dsa-2}
代码审计-数组返回NULL绕过
<?php
$flag = "flag";
if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';
}
?>
strpos() 函数查找字符串在另一字符串中第一次出现的位置。它不能对数组处理,如果是数组则返回null,null,也就不等于FALSE.构造payload:http://123.206.87.240:9009/19.php?password[]=1

Flag: flag{ctf-bugku-ad-2131212}

浙公网安备 33010602011771号