SQ儿攻击与防御 ■理解SQL注入 1.Wb上的数据和应用越丰富,越成为流行改击的目标. 2.黑容通过基于网络的漏洞来攻破信息、华统的机会正不 断减少,开始将重心转移到尝试危害应用上. SQL注入:是一种将SQL代码插入或添加到应用(用户)的 输入参数中的改击,之后再将这些参数传递给后台的 SQL服务器加以解释与执行, 直接方式:将代码插入到参数中,然后这些参数会被置入 到SQL命令中如以执行. 间接方式:将恶意代码插入到字特串中,之后再将这些字 特串保存到数据库的数据表中或将其当作元数据. chenkm@ustc.edu.cn 0551 2022/11/8 3602824
■ 理解SQL注入 1. Web上的数据和应用越丰富, 越成为流行攻击的目标. 2. 黑客通过 基于网络的漏洞来攻破信息系统的机会正不 断减少, 开始将重心转移到尝试危害应用上. SQL注入: 是一种将SQL代码插入或添加到应用(用户) 的 输入参数中的攻击, 之后再将这些参数传递给后台的 SQL服务器加以解释与执行. 直接方式: 将代码插入到参数中, 然后这些参数会被置入 到SQL 命令中加以执行. 间接方式: 将恶意代码插入到字符串中, 之后再将这些字 符串保存到数据库的数据表中或将其当作元数据. SQL攻击与防御 11 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
为展示该过程,我们回到之前的那个简单的在线零售商店的例子。如果读者有印象的话, 当时使用了下面的UL来尝试查看商店中所有价格低于$100的商品: http://www.victim.com/products.php?va-100 这里我们尝试涧输入参数插入自己的SQL命令,可通过向L添加字符串OR= 来实现该目的: hp:/wwitm.ms.100 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824 12
12 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
这次,PHP脚本构造并执行的SQL语句将忽略价格而返回数据库中的所有商品,这是因 为我们修改了查询逻辑。添加的语句导致查询中的O操作符永远返回真(仰1永远等于), 从而出现这样的结果。下面是构造并执行的查询语句: SELECT FROM ProductsTbl WHERE Price 100.00'OR '1'=1 ORDER BY ProductDescription; 注意: 可通过多种方法来利用SQL注入漏洞以便实现各种目的。攻击成功与否通常高度依赖于 基础数据库和所攻击的互联系统。有时,完全挖掘一个漏洞需要有大量的技巧和坚强的教力。 chenkm@ustc.edu.cn 0551 2022/11/8 3602824 13
13 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
t-hwrict恤oacmslogp4phukeane-todpesrt-tay 在访问该CMS应用的功能之前,需要提供有效的用户名和口令,访问上述UL时会产生 知下错误:“1 emmaswor,lease trya3in”,下面是10gn,pp脚本的代码: /connect to the database Sconn mysql_connect ("localhost","username","password"); /dynamically build the sql statement with the input chenkm@ustc.edu.cn 0551- 2022/11/8 3602824 14
14 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
Squery "SELECT userid FROM CMSUsers WHERE user 'GET ["user"]'". "AND password ='GET["password"]'"; /execute the query against the database Sresult mysql_query(Squery); /check to see how many rows were returned from the database Srowcount mysql_num_rows(Sresult); /if a row is returned then the credentials must be valid,so /forward the user to the admin pages if (Srowcount !=0){header("Location:admin.php");} /if a row is not returned then the credentials must be invalid else die('Incorrect username or password,please try again.') chenkm@ustc.edu.cn 0551- 2022/11/8 3602824 15
15 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824