十六: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猜解出了数据库名,不知道列名,用偏移注入。
原文地址:https://www.cnblogs.com/SnowSec/p/14280362.html