一个数据库一般都包含有若干张表,如同我们前面暴出的数据库中admin表包含有管理员信息,而user表则包含有所有的论坛用户信息一样。以下面这张表为例:
Dv_User
UserID UserName UserPassword UserEmail UserPost
1 admin 469e80d32c0559f8 eway@aspsky.net 0
2 Test 965eb72c92a549dd 1@2.com 0
这是DVBBS 7.0的数据库中所有用户资料的表,Dv_User 是表名。每一行代表一个用户,每一列是该用户的某种属性。我们最感兴趣的自然是用户名与密码这样的属性了。
SQL是一种用于操作数据库的规范化语言,不同的数据库(MSSQL、MYSQL、ORACLE……)大体上都是一样的。比如我们要查询数据库中的信息:
select UserName,UserPassword from Dv_User where UserID=1;
这就是一个最典型的SQL查询语句,它的意思是,在Dv_User这张表中,将UserID为1的用户名与密码查询出来。
得到的结果是:admin 469e80d32c0559f8
SELECT语句语法:
SELECT [列名],[列名2]…… FROM [表名] WHERE [限制条件]
例:
SELECT * FROM Dv_User where UserID=1
表示查询UserID为1的所有信息。
更新:
UPDATE [表名] SET [列名]=新值 WHERE [限制条件]
例:
UPDATE Dv_User set [UserPassword]=’ 965eb72c92a549dd’ WHERE UserName=’admin’
此语句将把Dv_User表中的UserName为admin的那一行中UserPassword的值改为965eb72c92a549dd。
删除:
DELETE FROM [表名] WHERE [限制条件]
例:
DELETE FROM Dv_User WHERE UserName=’test’
将用户名为test的那一行从Dv_User表中删除
二、SQL注射漏洞简述
SQL语法看很容易上手,那SQL漏洞是怎么来的呢?”
if id<>"" then
sql="SELECT * FROM [日记] WHERE id="&id
rs.Open sql,Conn,1
我们这段代码是提取自BBSXP论坛的,经过我改动以后,把它做成了一个有漏洞的页面给你讲述SQL漏洞的原理。”
那张日记的表内容如下:
日记
id username title content adddate
我们访问 localhost/bbsxp/blog.asp?id=1
的时候结果如图1。
“访问blog.asp的时候,我们提交的参数id为1,那么放到SQL语句里就变成了:
SELECT * FROM [日记] WHERE id=1
所以就得到我们看到的那个页面,这就是sql注入的成因。
1楼2010-07-17 09:52
举报 |
个人企业举报
垃圾信息举报
C级丶娱乐
正式会员
5
SQL漏洞的起源就从这里开始了!注意到了吗?id的值是由我们提交的