SQL注入学习笔记(五)–查询方式、报错盲注、二次、加解密以及DNSlog等注入 1 拿到一个网站,先判断其最可能是何种查询方式,再判断其有无回显,最后选择注入方式。
当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式(如增删改)的问题 导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句大 概写法也能更好的选择对应的注入语句。(有时候select语句的执行结果也无回显,仅仅是对select的结果进行判断 ,然后返回的东西不涉及真实数据。)
SQL语句盲注 盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试, 这个过程称之为盲注。我们可以知道盲注分为以下三类:
1 2 3 4 1 、基于布尔的sQL 盲注- 逻辑判断 regexp, like , ascii,left , ord , mid2 、基于时间的sQL 盲注- 延时判断 if ,sleep3 、基于报错的sQL 盲注- 报错回显(强制回显) floor, updatexml, extractvalue
报错回显常见函数解析以及相关使用方法
报错盲注 1 username= xiaodi'or updatexml(1 , concat(0x7e , version(), 0x7e ), 0 ) or '&password= 123456 &sex= man&phonenum= 138 &email= %E5 %9 B%9 B%E5 %B7 %9 D&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