SQL注入篇(3)
sql注入:(无回显情况及其他)
1,报错注入:
基于报错的SQL盲注-报错回显 【强制性报错】
用到两个函数
<1> updatexml() #从目标xml中更改包含所查询值的字符串
用法 select 回显1,回显2,回显3
select 1,2,updatexml (xml_document,XPath_string,new_value);
第一个参数:XML_document 是String格式,为XML文档对象的名称,文中为DOC
第二个参数:XPath_string(Xpath格式字符串)
第三个参数:new_value,String格式,替换查找到的符合条件的数据
xml文档对象名称随便写【三个参数有两个保持一致 ;原理就是xpath格式报错 】
用法【2】
or updatexml(xml_document,XPath_string,new_value) or'
<2> extractvalue() #从目标xml中返回包含所查询的字符串
用法: select 回显1,回显2,回显3
select 回显1,回显2,extractvalue(XML_document,XPath)
第一个参数:XML_document 是String格式,为XML文档对象的名称,文中为DOC
第二个参数:XPath_String (Xpath格式字符串)
xml文档对象名称随便写
格式:union select extractvalue(1,concat(0x7e,(select version()))),2%23
%23 起注释作用 0x7e:~ concat:连接
时间盲注【没有回显 也没有报错 可用】
sleep(秒数) 休眠几秒
if() 可以写三目程序 sleep(if(database()='security',3,2)) #如果database=security 则只有运行3秒0 否则运行2秒
select * from users where id=3 and sleep(4);
select * from users where id=1 and sleep(if(database()='security',3,2));
2. 布尔盲注:
根据页面返回的状态来判断
1. MID函数
mid(database(),1,1)
截取database()字符串的第一位并只截取一位
截取字段 mid(a,b,c) 从b开始截取a字符串的c位
2. length函数
id=1 and length(database())=8
#length 长度 如果数据库名称字数=8 则显示正确显示,或者有显示
3. left函数
left(database(),1)=‘随便一个自己猜的字母’
left 猜解字母 1为第几个字母 如果该页面所在是数据库名称第一个字母=‘’ 则有显示
4. ascii函数
ASCII(mid(database(),1,1))>/</=二分法分解出某个数
ASCII表有255个 二分法就是从中间分数然后逐步缩小直至确定某个数
5. substr函数【从1开始】
substrate(database(),1,1)
截取database()字符串的第一位并只截取一位
6. limit 0,1
从0开始的第一位
3. 加密注入:
通过burp得知传输内容加密 则你需要将自己手动传输的参数和表单传输的参数一起加密。
加密方式有: base64 哈希 等!
4. 堆叠注入:
一堆SQL语句堆在一起一起运行
union 是后面只能是select查询语句
分号;表结束SQL语句
条件要求:数据库为MySQL 其他的不行