记住一个简单的SQL注入绕过

 2024-03-15 04:04:24  阅读 0

0x00 存在SQL注入

简而言之,当我遇到一个网站时,登录页面和数据包大致如下:

POST /jsweb/userlogin/UserLoginAction.aspx HTTP/1.1Host: 115.xxx.xxx.xxx:8042Content-Length: 47Accept: */*X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://115.xxx.xxx.xxx:8042Referer: http://115.xxx.xxx.xxx:8042/Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8Cookie: ASP.NET_SessionId=bxdzehxa5mvoco1fkrjlbqbtConnection: close
uname=admin*&pwd=dskfsdkf&valCode=1197&telphone=

验证码可绕过,登录名存在注入。

使用and 1=1、and 1=2时,发现过滤了空格,所以用/**/代替。

0x01 快速浏览一下

中间件是IIS,有一个len函数,确定为

order by 看看是否可以union,发现有10列

尝试联合

将 admin 转换为 int 时出错。 好像可以显示位。 经过测试,发现确实可以显示。

sql附近有语法错误_sql.附近有语法错误_数据库=附近有语法错误

可以获取数据库版本,可以确定union已经被注入了。

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

0x02

运行:--risk=3 --level=3 --batch --=1 -r 1.txt --dbms="mssql" ---agent --="'" --="--" - - =

sql附近有语法错误_sql.附近有语法错误_数据库=附近有语法错误

真奇怪。 您可以手动合并它。 我们首先看一下基于 的数据采集。

---db可以获取数据库名,但是获取表名时返回空。

--risk=3 --level=3 --batch --=1 -r 1.txt --dbms="mssql" ---agent --="'" --="--" --= - D--

sql附近有语法错误_数据库=附近有语法错误_sql.附近有语法错误

可以判断有注入。 可以手动测试1=1,也可以通过union测试。 看来确实有过滤。

0x03 检测过滤

看看过滤了什么。 Union 速度更快,所以使用 union 和 -v 5 来看看。

--risk=3 --level=3 --batch --=1 -r 1.txt --dbms="mssql" ---agent --="'" --="--" --= - -=U ---db -v 5

就拿最后一个来测试一下

提示 98 附近有错误

sql附近有语法错误_数据库=附近有语法错误_sql.附近有语法错误

感觉char等函数被过滤了。 字符被移动到显示位置。 测试一下。

有加号时会出错,没有加号则没有问题。 可能是加号被处理了。

sql附近有语法错误_sql.附近有语法错误_数据库=附近有语法错误

将其移动到显示位置并进行测试。 加号确实被处理并替换为任何内容。

0x04

我上网寻找可以代替加号的东西,但没有找到任何相关信息。 然后我就想会不会有,结果有。

有两个,一个适合2012年的,一个适合2008年的。我们这里的数据库是08年的,你可以用.py来确定数据库。

--risk=3 --level=3 --batch --=1 -r 1.txt --dbms="mssql" ---agent --="'" --="--" --=, --=U ---db

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

,可以获取数据库表,但是获取表的列名时仍然没有返回数据。

0x05 再次检测并过滤

同样 -v 3 查看然后测试

数据库=附近有语法错误_sql附近有语法错误_sql.附近有语法错误

存在语法错误。 大概就是那个什么都没有替换掉的吧。 慢慢尝试吧。 。 。

看了一下语句,涉及到的有union,,cast,from,,,where,and,可能会被过滤。 联盟,没问题。 之前测试过,剩余处理过的关键词感觉很大。 概率来自于,和。 。 。 。

语法错误。 。 。 应该是从。可以报错吗,还是应该报错到显示位置?

emmmm,感觉没有滤镜。 。 。 但存在语法错误。 。 。

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

网上查了一下,其实之前的from出错是因为表的原因,from 1,没有表1,所以就出现了错误。 。 。 。 。

与mysql不同的是,它仍然很少被使用。 。 。

但是再尝试的时候还是有问题,没有返回数据。

本地测试同样的语句也能返回数据,令人困惑

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

0x06 操作系统外壳

实在没办法,--is-dba为True,直接--os- --risk=3 --level=3 --batch --=1 -r 1.txt --dbms="mssql" -- - 代理 --="'" --="--" --=, --os-shell

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

,, 什么都没说。 。 。 。 。

sql附近有语法错误_sql.附近有语法错误_数据库=附近有语法错误

看港口

添加用户不起作用,卡住了。 应该是被屏蔽了吧净用户 . /add & net /add & net 用户 /:是

数据库=附近有语法错误_sql.附近有语法错误_sql附近有语法错误

看了一下,有360,我们先给它传个shell,方便后续渗透。

找到路径:dir /s /be:\".jpg"

sql.附近有语法错误_数据库=附近有语法错误_sql附近有语法错误

使用echo写入txt来确定路径。 我已经尝试了几次但没有任何效果。 写中文路径时提示不存在。 。 。 。 。

本来网上查了一下可以用bat写中文路径文件,但是我尝试使用,但是没能下载成功。

检查是否有不包含中文字符的网页路径:输入C:\\\\\。

发现80端口的路径是c:\\

写一个句子:

sql附近有语法错误_数据库=附近有语法错误_sql.附近有语法错误

访问后出现错误

sql附近有语法错误_数据库=附近有语法错误_sql.附近有语法错误

后续测试发现通过浏览器可以写出中文名。 创建了文件9d.txt,证明网站路径为e:\江xxxx网站\JsWeb

现在知道目标的绝对路径是e:\江xxxx网站\JsWeb\,目标80端口的绝对路径是c:\\

PS:因为当时还有其他事情要做,所以没有继续。 其实你也可以将数据库shell备份到网站目录下。 后来我还看到了“/”应用程序中没有出现的服务错误。

0x07 查找数据库信息

找到 Web.,dir /s /be:\"Web.",输入 e:\\web。 获取数据库用户名和密码 user id=kw;=;

标签: 过滤 出错 路径

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码