一聚教程网:一个值得你收藏的教程网站

热门教程

SQL不完全思路与防注入程序

时间:2022-06-30 10:40:01 编辑:袖梨 来源:一聚教程网

<一>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错误信息前面的勾去掉。
为了把问题说明清楚,以下以HTTP://www.163.com/news.asp?id=xx(这个地址是假想的)
为例进行分析,xx可能是整型,也有可能是字符串。
1、整型参数的判断
当输入的参数xx为整型时,通常news.asp中SQL语句原貌大致如下:
select * from 表名 where 字段=xx,所以可以用以下步骤测试SQL注入是否存在。
最简单的判断方法
HTTP://www.163.com/news.asp?id=xx’(附加一个单引号),
此时news.asp中的SQL语句变成了
select * from 表名 where 字段=xx’,
如果程序没有过滤好“’”的话
就会提示 news.asp运行异常;
但这样的方法虽然很简单,但并不是最好的
因为
first,不一定每台服务器的IIS都返回具体错误提示给客户端,
如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,
但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。
请和系统管理员联络。
second,目前大多数程序员已经将“’“ 过滤掉,所以用” ’”测试不到注入点
所以一般使用经典的1=1和1=2测试方法
见下文:
HTTP://www.163.com/news.asp?id=xx and 1=1, news.asp运行正常,
而且与HTTP://www.163.com/news.asp?id=xx运行结果相同;

热门栏目