<一>SQL注入简介 许多网站程序在编写时,没有对用户输入数据的合法性进行判断, 使应用程序存在安全隐患。用户可以提交一段数据库查询代码, (一般是在浏览器地址栏进行,通过正常的www端口访问) 根据程序返回的结果,获得某些他想得知的数据, 这就是所谓的SQL Injection,即SQL注入。 <二>SQL注入思路 思路最重要 其实好多人都不知道SQL到底能做什么呢 这里总结一下SQL注入入侵的总体的思路 1. SQL注入漏洞的判断,即寻找注入点 2. 判断后台数据库类型 3. 确定XP_CMDSHELL可执行情况;若当前连接数据的帐号具有SA权限, 且master.dbo.xp_cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shell)能够正确执行,则整个计算机可以通过几种方法完全控制,也就完成了整个注入过程 否则继续: 1. 发现WEB虚拟目录 2. 上传ASP木马; 3. 得到管理员权限 具体步骤 一、SQL注入漏洞的判断 如果以前没玩过注入, 请把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。 为了把问题说明清楚,以下以asp?id=xx(" target=_blank>http://www.132yc.com/news.asp?id=xx(这个地址是假想的) 为例进行分析,xx可能是整型,也有可能是字符串。 1、整型参数的判断 当输入的参数xx为整型时,通常news.asp中SQL语句原貌大致如下: select * from 表名 where 字段=xx,所以可以用以下步骤测试SQL注入是否存在。 最简单的判断方法 asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx’(附加一个单引号), 此时news.asp中的SQL语句变成了 select * from 表名 where 字段=xx’, 如果程序没有过滤好“’”的话 就会提示 news.asp运行异常; 但这样的方法虽然很简单,但并不是最好的 因为 first,不一定每台服务器的IIS都返回具体错误提示给客户端, 如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的, 但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。 请和系统管理员联络。 second,目前大多数程序员已经将“’“ 过滤掉,所以用” ’”测试不到注入点 所以一般使用经典的1=1和1=2测试方法 见下文: asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx and 1=1, news.asp运行正常, 而且与asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx运行结果相同; asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx and 1=2, news.asp运行异常;(这就是经典的 1=1 ;1=2 判断方法) 如果以上面满足,news.asp中就会存在SQL注入漏洞,反之则可能不能注入。 2、字符串型参数的判断 方法与数值型参数判断方法基本相同 当输入的参数xx为字符串时,通常news.asp中SQL语句原貌大致如下: select * from 表名 where 字段='xx',所以可以用以下步骤测试SQL注入是否存在。 asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx’(附加一个单引号),此时news.asp中的SQL语句变成了 select * from 表名 where 字段=xx’,news.asp运行异常; asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx and '1'='1', news.asp运行正常, 而且与asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx运行结果相同; asp?id=xx" target=_blank>http://www.123yc.com/news.asp?id=xx and '1'='2', news.asp运行异常; 如果以上满足,则news.asp存在SQL注入漏洞,反之则不能注入 3、特殊情况的处理 有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。 ①大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等; ②UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等 ;URLEncode信息参见附件一; ③ASCII码法:可以把输入的部分或全部字符全部 <4>出了上述方法以外,还有个更简单的方法就是使用现成的工具 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 11:34 , Processed in 0.190300 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.