易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL注入原理深度解析

对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有SQL注射、命令注射以及新近才出现的XPath注射等等。本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解。
一、注射式攻击的原理
注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。
为了发动注射攻击,攻击者需要在常规输入中混入将被解释为命令的“数据”,要想成功,必须要做三件事情:
1.确定Web应用程序所使用的技术
注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。
2.确定所有可能的输入方式
Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过隐藏的HTML表单输入、HTTP头部、cookies、甚至对用户不可见的后端AJAX请求来跟Web应用进行交互。一般来说,所有HTTP的GET和POST都应当作用户输入。为了找出一个Web应用所有可能的用户输入,我们可以求助于Web代理,如Burp等。
3.查找可以用于注射的用户输入
在找出所有用户输入方式后,就要对这些输入方式进行筛选,找出其中可以注入命令的那些输入方式。这个任务好像有点难,但是这里有一个小窍门,那就是多多留意Web应用的错误页面,很多时候您能从这里得到意想不到的收获。
二、SQL注射原理
上面对注射攻击做了一般性的解释,下面我们以SQL注射为例进行讲解,以使读者对注射攻击有一个感性的认识,至于其他攻击,原理是一致的。
SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
三、绕过用户认证
我们这里以一个需要用户身份认证的简单的Web应用程序为例进行讲解。假定这个应用程序提供一个登录页面


相关文档:

SQL行转列的动态构造方法

SQL行转列的动态构造方法
/*假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/
create t ......

Oracle SQL优化2

Oracle SQL 的优化规
一:尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替 ,用IN写出来的SQL,的优点是比较容易写及清晰易懂,但是用IN的SQL
性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
      ORACLE试图将其转换成多个表的连接,如果转换 ......

SQL 查詢不區分大小寫

SQL 查詢不區分大小寫
2007年04月19日 星期四 15:27
正常用这个方法就给達到效果了。select * from
pl_account     where UPPER(fname) like 'PE%'
附加:
在sql2000和7.0的查询语句中,区分大写的查询方法
--sql2000,就用下面的方法.
--就是在字段名后加 collate Chi ......

SQL查询重复记录

SQL查询重复记录
http://m.cnblogs.com/15628/1534873.html
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
[图片]select * from people
[图片]where peopleId in (select   peopleId  from   people  group  by   peopleId  ......

SQL用select语句查询重复记录

SQL用select语句查询重复记录
http://hi.baidu.com/bilbit/blog/item/5ed5de16a6f6b412962b43eb.html
用select语句,查询重复记录
假设,表名为 T1 子段为 A,B,C
select count(*) ,A,B,C from T1
   group by A,B,C having count(*) > 1
测试数据:
    A100    &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号