一个SQL 注入的典型例子

var ShipCity;
ShipCity = Request.from("ShipCity");
var sql = "select * from OrdersTable where ShipCity = '"+ShipCity+"'";

 

变量ShipCity的值由用户提交, 在正常情况下,加入用户输入的是"Beijing" 那么SQL 语句会执行:

SELECT * FROM OrdersTable WHERE ShipCity = 'Beijing';

 

但假如用户输入一段有语义的SQL语句,比如:

beijing';drop table OrdersTable--

他的请求为

http://localhost:3452/ExcelUsingXSLT/Default.aspx?shipcity=beijing';drop table OrdersTable--

 

 

那么, SQL 语句在实际执行时就会如下:

SELECT * FROM OrdersTable WHERE ShipCity='Beijing'; drop table OrdersTable--'

 

我们看到,原本正常执行的查询语句, 现在变成了查询完后, 再执行一个drop表的操作, 而这个操作,是用户构造了恶意数据的结果。

 

回过头来看看注入攻击的两个条件;

1. 用户能够控制数据的输入 - 在这里, 用户能够控制变量 ShipCity.

2. 原本要执行的代码, 拼接成了用户的输入。

 

在sql 注入的过程中, 如果网站的Web 服务器, 开启了错误回显,  则会为攻击者提供极大的便利。   

 

 

ShipCity
posted on 2017-11-25 13:52  小坦克  阅读(2092)  评论(0编辑  收藏  举报