本文章仅供参考学习使用,不做任何违法犯罪行为!!!
一.SQL注入的本质:把用户输入的数据当作代码执行
条件:
- 用户能够控制输入;
- 原本程序要执行的代码,拼接了用户输入的数据SQL注入出现的地方:用户一切可以输入的地方;数据库可能导入导出的地方;
动态网站:sp,jsp,aspx等极大可能存在sql注入漏洞;
静态网站像html与数据库没有太对的交互,不会存在sql注入漏洞
伪静态网站:看着是静态网站实际上是动态网站
- url传参;表单post;Cookie;user-agent;X-Forwarded-For
- 新闻/商品等查询处;yoghurt注册/登录处;修改用户资料时;找回密码处;搜索框.
二.sql注入的分类:
- 数据传输方式:
GET类型 POST类型 COOKIE类型
- 数据的类型:
数字型(更加严谨些) 字符型
- 注入的模式:
基于联合查询的注入模式
基于报错的注入模式
基于布尔的盲注
基于时间的盲注
推查询的注入模式
三.常见的闭合在字符: ‘’ “” (‘’) (“”)
只要在闭合字符里的数据都是字符型数据
没有闭合的数据叫数字型数据
四.表的结构——information_schema:
Information_schema:
Schemata //所有数据库的名字
Schema_name (列名) //数据库的名
Tables //所有表的名字
Tables_schema //表所属数据库的名字
Tables_name //表的名字
Colums //所有字段的名字
Table_schema //字段所属数据库的名字
Table_name //字段所属表的名字
Column_name //字段的名字

五.SQL注入的一般步骤:
- 判断网站是否存在sql注入漏洞:输入闭合字符,报错说明存在注入漏洞,原因在于闭合字符是成双成对出现的,所以输入单个闭合字符报错,有语法的问题。

- 判断网站的闭合字符
特殊:
Id=1’ order by 3 --+ //执行该语句之后极为存在单引号的闭合字符
Id=1 and aleep(10)--+ //这种形式也可以中作为判断字符,但是受到网络的影响;
And :一真一假即为假 真真为真 假假为假
Or: 一真一假即为真 真真为真 假假为假
A.Id=1’ 异常/报错
Id=1 and 1=1 --+ 正确
Id=1 and 1=2 --+ 错误
说面页面可能错在数据型sql注入
- id=1’异常
Id=1’ and 1=1 --+ 正确
id=1’ and 1=2 -- + 错误
极有可能存在单引号字符型sql注入
- id=1’异常
Id=1” and 1=1 --+正常
Id=1” and 1=2 --+错误
极有可能存在双引号字符型sql注入
(3)基于联合询的注入
- 求闭合字符
- 求列数:二分法先用order by 10 报错再选用 order by 5 报错再选 order by 3 知道到正常的页面,判断出来列数
- 求显示位(在网页中显示的内容)


D. 爆数据库名:先查看数据库的版本

E.报表名
语句:id=1 and 1=2 union select 1,database(),group_concat(table_name) from information_schema.tables where table_shcema=’security’

F.报列名
语法:group_concat(column_name) from information_schema.columns where table_schema=’security’ and table_name=’user’
G.报字段
Group_concat(username,0x23,password) from users --+

本文探讨了SQL注入漏洞的本质,出现的条件和位置,包括动态和静态网站的差异。文章详细介绍了注入的分类,如GET、POST、COOKIE类型的注入,以及数字型和字符型数据的注入模式。通过信息_schema表解析了数据库结构,并提供了判断SQL注入漏洞的步骤和技巧,如利用闭合字符和布尔盲注。此外,还涉及了如何爆库、报列名和字段的方法。
&spm=1001.2101.3001.5002&articleId=123778220&d=1&t=3&u=4b5d2ad56454449cbb696e9ef84a24a3)
963

被折叠的 条评论
为什么被折叠?



