目录
[[HCTF 2018]Warmup](#[HCTF 2018]Warmup)
[[HGAME 2023 week1]Classic Childhood Game](#[HGAME 2023 week1]Classic Childhood Game)
[HCTF 2018]Warmup
1、题目
![](https://img-blog.csdnimg.cn/direct/dadc45af3d0045dab89b28dfe9afc158.png)
2、知识点
文件包含,代码审计
3、思路
![](https://img-blog.csdnimg.cn/direct/0e478d7b5c6f44089275393f6118b6d5.png)
打开题目,发现只有一个表情,右键查看源码
![](https://img-blog.csdnimg.cn/direct/e86a100c0b9940bb9e32b9bd912aae45.png)
发现了source.php文件,打开,发现源码
![](https://img-blog.csdnimg.cn/direct/2863c58aaee34cff89795182e0484946.png)
进行代码审计
先对一些不认识的函数进行解释
in_array(a,b):检测b中是否有a
mb_substr(a,b,c):将a进行分片,从b到c,左闭右看
mb_strpos(a,b):返回a中第一次出现b字符串的位置
urldecode():url解码
include():将PHP文件内容插到另外一个PHP文件中,只产生警告,程序会继续执行
下面对代码进行解释
php
class emmm
{
public static function checkFile(&$page)
{
//定义一个数组,里面有两个值
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//对$page参数的值进行判断,看看是否为空,或者是否为字符串
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
//判断$page参数的值是否在数组里面
if (in_array($page, $whitelist)) {
return true;
}
//对$page参数的内容进行切片,并赋值给$_page
$_page = mb_substr(
$page,
0,
//获取$page参数的内容第一个出现?的位置
mb_strpos($page . '?', '?')
);
//对$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;
}
}
//看看通过GET或者POST上传的file参数的内容是否为空
if (! empty($_REQUEST['file'])
//判断$file是否为字符串
&& is_string($_REQUEST['file'])
//执行emmm类中的checkFile函数
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
我们先访问hint.php
![](https://img-blog.csdnimg.cn/direct/4b0019646d25489e9c1733d735776270.png)
提示flag在ffffllllaaaagggg文件中
构造payload:
?file=source.php?/../../../../ffffllllaaaagggg
![](https://img-blog.csdnimg.cn/direct/e321da6d8ed64988bbe23c68b88cb1c6.png)
这里用四个../是因为一般Web服务的文件夹在/var/www/html目录中,而ffffllllaaaagggg在根目录下,所以用四层
得到flag:NSSCTF{3204be46-27f5-40b0-8047-9ac0d07d18f5}
[HGAME 2023 week1]Classic Childhood Game
4、题目
![](https://img-blog.csdnimg.cn/direct/49de2c4280284afc862bf4e20e853de3.png)
5、知识点
前端JS代码
6、思路
![](https://img-blog.csdnimg.cn/direct/1692a86eb8854f498482420d661919d7.png)
这种就需要在代码里面找,找到过关的那一个点,修改代码
在Events.js文件中,可以看到很多事件,都在调用mota()函数,在结尾出现了mota函数
![](https://img-blog.csdnimg.cn/direct/c1ef9d4851e04336aef38c2cf1e3808b.png)
![](https://img-blog.csdnimg.cn/direct/0403aba90b0c473d90574cbfcd1f39ff.png)
可以发现这个函数是一个解密函数,打卡控制台运行这个函数,得到flag
![](https://img-blog.csdnimg.cn/direct/004a20a844784358896490c9ed36e24f.png)
得到flag:hgame{fUnnyJavascript&FunnyM0taG4me}
这篇文章就先写到这里了,哪里不懂的或者哪里不足的欢迎指出