记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

admin 2025年3月12日23:03:48评论15 views字数 954阅读3分10秒阅读模式

文章首发在:先知社区

https://xz.aliyun.com/news/17077

0x00 文章背景

日常测试时发现客户网站存在注入,我看着这界面的样子就像是个CMS来的,搜集一会之后确认了,果然是。本来还想着以为可以捡到一本证书了,结果显然运气不够,开发厂商的注册资产没达标。

那怎么办了,挖都挖了,记录一下吧~~

0x01 报错出现

在瞎注的帮助下,发了有几个数据包出现了报错。同时,发现报错信息中返回了SQL语句。最后在逐步测试中,确认了这个包的参数存在注入:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

哎,那很好了。通过上图的报错信息我们可得,最后面的报错信息是:in(''),说明呢,这一段语句原来应该是:

select * from xlz where id in ($id);

我就简单还原一下,大致是这样基本没有问题了。那么同时,单引号被转换成了反斜杠+单引号,说明这里有函数对单引号进行转义。经过测试呢,这个位置出现单引号、双引号、斜杠之类的会直接报错:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

接下来,在数据库里造一下语句给大家展示一下:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

那么我们后续的Payload,基于这个格式就包没有问题。

0x02 长度判断

经过构造构造构造,最后使用的Payload如下所示:

11)AND(CASE+WHEN(1=1)+THEN+1+ELSE+exp(710)+END

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录
记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

很显然没毛病,接下来二分法判断库名长度:14

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录
记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

接下来,尝试截取字符串,获取库名。但是,显然某个地方出现了问题,我盲猜一波,有东西被过滤了:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

0x03 手拿把掐

依照我一坤年的注入经验来看,前面的语句都没有问题,但是来到substr()函数时爆炸了。那么,大概率是逗号被干掉了,那么我们可以:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

可以用from for来代替逗号,如下:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

让我们套进数据包,发包看看怎么事:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

果然我的经验没毛病,接下来直接改一下再往里套:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

又忘了件事,出现单引号会被转义。但是获取库名时,字符串是需要被引号包裹的。此时引号又不能用怎么办?那就改造Payload,加入Ascii码函数来转换为十进制:

11)AND(CASE+WHEN(ascii(Substr(database()+from+1+for+1))=1)+THEN+1+ELSE+exp(710)+END

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

没问题了,直接开爆:

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

库名已出,点到即止,噢耶~

记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

原文始发于微信公众号(亿人安全):记一次漏洞挖掘过程中的SQL注入浅浅绕过记录

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月12日23:03:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次漏洞挖掘过程中的SQL注入浅浅绕过记录https://cn-sec.com/archives/3828910.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息