目录
[HCTF 2018]Warmup
1、题目
2、知识点
3、思路
[HGAME 2023 week1]Classic Childhood Game
4、题目
5、知识点
6、思路
[HCTF 2018]Warmup
1、题目
2、知识点
文件包含,代码审计
3、思路
打开题目,发现只有一个表情,右键查看源码
发现了source.php文件,打开,发现源码
进行代码审计
先对一些不认识的函数进行解释
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文件中,只产生警告,程序会继续执行
下面对代码进行解释
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
提示flag在ffffllllaaaagggg文件中
构造payload:
?file=source.php?/../../../../ffffllllaaaagggg
这里用四个../是因为一般Web服务的文件夹在/var/www/html目录中,而ffffllllaaaagggg在根目录下,所以用四层
得到flag:NSSCTF{3204be46-27f5-40b0-8047-9ac0d07d18f5}
[HGAME 2023 week1]Classic Childhood Game
4、题目
5、知识点
前端JS代码
6、思路
这种就需要在代码里面找,找到过关的那一个点,修改代码
在Events.js文件中,可以看到很多事件,都在调用mota()函数,在结尾出现了mota函数
可以发现这个函数是一个解密函数,打卡控制台运行这个函数,得到flag
得到flag:hgame{fUnnyJavascript&FunnyM0taG4me}
这篇文章就先写到这里了,哪里不懂的或者哪里不足的欢迎指出