SQL注入学习笔记(五)–查询方式、报错盲注、二次、加解密以及DNSlog等注入

1
拿到一个网站,先判断其最可能是何种查询方式,再判断其有无回显,最后选择注入方式。

当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式(如增删改)的问题
导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句大
概写法也能更好的选择对应的注入语句。(有时候select语句的执行结果也无回显,仅仅是对select的结果进行判断
,然后返回的东西不涉及真实数据。)

SQL语句盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,
这个过程称之为盲注。我们可以知道盲注分为以下三类:

1
2
3
4
1、基于布尔的sQL盲注-逻辑判断 regexp, like , ascii,left, ord , mid
2、基于时间的sQL盲注-延时判断 if ,sleep
3、基于报错的sQL盲注-报错回显(强制回显) floor, updatexml, extractvalue
--先强制报错,不行再逻辑判断,最后延时判断。

报错回显常见函数解析以及相关使用方法

报错盲注

1
username=xiaodi'or updatexml(1,concat(0x7e,version(),0x7e),0) or'&password=123456&sex=man&phonenum=138&email=%E5%9B%9B%E5%B7%9D&add=%E6%88%90%E9%83%BD&submit=submit

注意:将注入语句放在语句的其他位置(如email等)是可以的,注意看网站提交的数据。

时间盲注(if+sleep)

1
2
3
4
select * from member where id=1 and sleep(if(database()='pikachu',5,0));
Empty set (5.00 sec)
语句的意思就是如果数据是pikachu就延迟5秒输出,不是的话就立即返回,但是在实际渗透过程中由于受到网络的影响时间注入不是很靠谱。
limit 0,1 #表示从第一行开始取一行

布尔盲注

1
2
布尔(Boolean)型是计算机里的一种数据类型,只有True(真)和False(假)两个值。一般也称为逻辑型。
页面在执行sql语句后,只显示两种结果,这时可通过构造逻辑表达式的sql语句来判断数据的具体内容。
1
注意:盲注时,先判断数据库名字长度,再一位一位截取。

拓展

加解密注入:先要把语句写好,再做同种加密。
加解密注入演示:3:00
二次注入:一般是用于白盒测试、黑盒测试就算是找到注入也没办法攻击。(一般这种漏洞存在于代码审计)
比如搜索框、输入框、注册框、更改密码框里面写入语句,然后页面将数据带到数据库进行拼接,形成sql二次注入。
二次注入演示:28:00
DNSlog注入:使用DnsLog盲注仅限于windos环境。,且拥有高权限(如文件读取)。
DNSlog:解决了盲注不能回显数据、效率低的问题。
DNSlog注入演示:48:00
中转注入:自己写脚本放入sqlmap内的tamper(插件库)内,然后使用sqlmap注入时调用,碰到没有插件可以用中转注入。
(自己手写代码,利用sqlmap注入,以后可以自己开发些网上没有的插件,辅助自己注入)
中转注入演示:1:00:00