攻防世界新手练习区WEB安全挑战解析
1. view_source
目标:获取网页源代码中的flag
解题步骤:
- 访问目标URL
- 发现右键被禁用
- 使用浏览器开发者工具(F12)查看页面源代码
- 在源代码中找到flag
关键点:
- 当网页禁用右键时,可使用F12或Ctrl+U查看源代码
- flag格式:
cyberpeace{32位MD5值}
flag:cyberpeace{0f3a3e4ab8c8664f3cf40d4240ec7b53}
2. robots
目标:利用robots协议发现隐藏文件
解题步骤:
- 访问目标URL
- 尝试访问
/robots.txt文件 - 发现提示的隐藏文件路径
- 访问该隐藏文件获取flag
关键点:
- robots.txt是搜索引擎爬虫协议文件
- 常见路径:
/robots.txt - 可能包含网站不希望被索引的敏感文件路径
flag:cyberpeace{577d71f33e261f53ee278275e3de3de3}
3. backup
目标:利用备份文件泄露获取flag
解题步骤:
- 访问目标URL
- 尝试常见备份文件名:
index.php~index.php.bak
- 下载并查看备份文件内容
- 在文件中找到flag
关键点:
- 开发人员可能遗留备份文件在服务器上
- 常见备份文件后缀:
.bak,~,.old,.backup - 也可使用目录遍历工具扫描
flag:Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
4. cookie
目标:从HTTP cookie中获取flag
解题步骤:
- 访问目标URL
- 检查HTTP响应头中的cookie信息
- 根据提示访问
cookie.php - 检查响应头获取flag
关键点:
- 使用开发者工具查看网络请求
- 关注Set-Cookie头和响应头信息
- 可能需要检查多个页面的响应头
flag:cyberpeace{6504b9e7b01f8a97949a68d32982ce70}
5. disabled_button
目标:绕过禁用按钮获取flag
解题步骤:
- 访问目标URL
- 发现按钮被禁用无法点击
- 使用开发者工具检查按钮元素
- 移除
disabled属性 - 点击按钮获取flag
关键点:
- HTML元素的
disabled属性会阻止交互 - 前端验证可以被绕过
- 修改DOM元素属性是常见绕过方法
flag:cyberpeace{0b19b9abb6aea292154a6499abb172e6}
6. weak_auth
目标:通过弱密码爆破获取flag
解题步骤:
- 访问目标URL
- 尝试任意账号密码登录
- 发现提示需要使用admin账号
- 使用工具(如Burp Suite)爆破admin密码
- 成功登录获取flag
关键点:
- 常见弱密码:123456, admin, password等
- 可使用字典进行爆破
- 注意网站是否有防爆破机制
flag:cyberpeace{f5a9342401aee62a8ea8d22cb9362cc9}
7. simple_php
目标:通过PHP类型转换漏洞获取flag
解题步骤:
- 分析源代码逻辑:
- 参数a需要等于0又不等于0
- 参数b需要大于1234且不是数字
- 构造特殊payload:
- a=任意非数字字符(如'a'),PHP会转换为0但本身不为0
- b=1235a,数值比较时会转换为1235但is_numeric检测不通过
- 提交payload获取flag
关键点:
- PHP弱类型比较特性
==与===的区别is_numeric()函数检测- 类型转换漏洞利用
flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
8. get_post
目标:发送GET和POST请求获取flag
解题步骤:
- 访问目标URL
- 发送GET请求带参数a=1
- 发送POST请求带参数b=2
- 获取flag
关键点:
- GET请求可通过URL直接发送
- POST请求需要使用工具(如curl、Postman)或HTML表单
- HTTP请求方法差异
flag:cyberpeace{f63d796525d81be9a436ed31d1ef7c51}
9. xff_referer
目标:伪造HTTP头信息获取flag
解题步骤:
- 分析题目要求:
- 需要特定X-Forwarded-For头
- 需要特定Referer头
- 使用工具修改请求头:
- 添加
X-Forwarded-For: 123.123.123.123 - 添加
Referer: https://www.google.com
- 添加
- 发送请求获取flag
关键点:
- X-Forwarded-For用于标识客户端原始IP
- Referer表示请求来源
- 头部信息可以被伪造
- 常用工具:Burp Suite, curl, Postman
flag:未在文中明确给出
10. webshell
目标:利用一句话木马获取flag
解题步骤:
- 访问目标URL发现一句话木马
- 使用中国菜刀等工具连接
- 使用密码'shell'连接
- 获取服务器权限查找flag
关键点:
- 常见一句话木马格式:
- PHP:
<?php @eval($_POST['pass']);?> - ASP:
<%eval request("pass")%> - ASPX:
<%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
- PHP:
- 连接工具:中国菜刀、蚁剑、C刀等
flag:cyberpeace{3dffde669e47bfaaa521bbbba1f075b1}
11. command_execution
目标:利用命令注入漏洞获取flag
解题步骤:
- 访问目标URL发现ping功能
- 测试命令注入:
127.0.0.1;ls
- 查找flag文件:
127.0.0.1;find / -name flag.txt
- 查看flag文件内容:
127.0.0.1;cat /home/flag.txt
关键点:
- Linux命令注入常用分隔符:
;,&,|,&&,|| - 常用命令:
find / -name flag*cat /flagls -la
- 注意权限限制
flag:cyberpeace{a120a656a36cbc00c6e2b288b06564b1}
12. simple_js
目标:分析JavaScript代码获取flag
解题步骤:
- 访问目标URL发现密码验证
- 分析JavaScript源代码
- 发现关键函数
dechiffre和加密字符串 - 解码加密字符串获取flag
关键点:
- JavaScript混淆与反混淆
String.fromCharCode()函数- 数字转ASCII字符
- 可编写Python脚本辅助解码
解码脚本:
s = [55,56,54,79,115,69,114,116,107,49,50]
d = ""
for i in s:
b = chr(i)
d = d + b
print(d)
flag:Cyberpeace{786OsErtk12}