SQL注入式攻击实例讲解
刚刚高中的一位同学问我一道笔试题:请简述SQL注入式攻击及其原理。
(Q:攻击?难道是做黑可吗??)
可以把这种行为理解成黑客行径,因为这样做的目的就是“非法获取”。
(Q:怎么做?)
可以按照我下面的步骤一步一步来,大家也就当一回“黑客”了。(P.S. 这可是我“独家研制”的啊~)
string starFire = "星火" ; // 瞧我C#学的多好
《starFire英语》大家都应该了解吧(别说你没考过CET),现在的starFire背单词的书后面会附有一个passcode,通过这个code我们能够下载配套的学习软件(号称价值¥38)。但是我们现在不想买书,就想下载怎么办?我们当然可以把那个passcode扣下来,不过这样会被“黑客”和买到这本书的读者严重BS~~那么我们就来当一回真正的“黑客”吧
大家可以先在Google上搜一下“starFire英语 下载中心”(恕我不能公布网址,要不被人家看见就不愉快了),点击进去,在上面的导航连接中找到“starFire软件”,点进去(应该到'/soft/xhsoft/index.html'路径下了)。进来后,ooh,这么多软件啊~让我们开始“黑”吧~
随便找一个,点它,就会进入下载页面。咦?~~发现了没,上面有一个“验证码”的输入框,随便输点儿东西试试,它貌似还是很管用的啊。那我们就来看看,它能不能经受住我们“注入式攻击”的考验。
在文本里输入——1'or'1'='1——横线中间的东西,然后点击“下载”。怎么样,奇妙的事情出现了吧~
(Q:这到底是为什么啊?)
原因解释:
在这里我先不给“SQL注入式攻击”下定义。我们知道,我们在网页上所输入的东西,最终会被提交到数据库里,当作查询条件。我们假设输入的验证码被提交到DB里面执行的语句是——Select product from t_Product where passcode='code' (这里假设"code"是接收值的变量),那么当我们提交这个查询后,变量code就会被替换为我们在文本框里输入的东西,即整个SQL语句变成——Select product from t_Product where passcode='1'or'1'='1'。这样我们再看,原先的一个字符串变成了3个,而且用“或”关系连了起来,也就是——where passcode='1'or'1'='1' 这是一个永远成立的条件!也就是说,输入这个关键字后,SQL里面的where子句将会失去作用!
再举个例子:假设公安局户籍中心用的是MySQL数据库,其中查某个公民详细信息的SQL语句是——
相关文档:
SQL注入攻击的危害性很大。在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。
一、 SQL注入攻击的简单示例。
statement := "SELECT * from Users WHERE Value= " + a_variable + "
上面这条语句是很普通的一条SQL语句,他主要实现的功能就是 ......
这sql 语句写的真的很不错!
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([col1] bigint,[col2] varchar(6),[col3] varchar(6))
insert [tb]
select 130126200201000275,'王文霞','靳川川' union all
select 130126200201000275,'王文霞','靳澤' union all
select 13012620 ......
课程五 子查询
本课重点:
1、在条件未知的情况下采用嵌套子查询
2、用子查询做数据处理
3、子查询排序
注意:以下实例中标点均为英文半角
一、概述:
子查询是一种SELECT句式中的高级特性,就是一个SELECT语句作为另一个语句的一个段。我们可以利用子查询来 ......
课程七 其他数据库对象
SEQUENCE
创建实例:
SQL> CREATE SEQUENCE s_dept_id
2 INCREMENT BY 1
3 START WITH 51
4 MAXVALUE 9999999
5 NOCACHE
6 NOCYCLE;
Sequence created.
1、NEXTVAL和CURRVAL的 ......