sql注入的类型和简单的代码原理(2)

本文详细介绍了SQL注入的四种常见手法:联合查询、报错注入、布尔盲注和延时注入。联合查询允许跨库、跨表查询;报错注入通过错误信息执行SQL;布尔盲注利用页面状态判断数据库内容;延时注入则根据查询响应时间来判断信息。这些手法展示了攻击者如何利用不安全的输入验证获取敏感数据。
摘要由CSDN通过智能技术生成

sql注入的手法分类

 0x00 联合查询

联合查询就是利用union select 语句,该语句会同时执行两条select 语句,实现跨库、跨表查询。

<?php
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
  	echo "<font size='5' color= '#99FF00'>";
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	}
?>

联合查询。

没有过滤可以进行拼接,有可以回显点

    echo 'Your Login name:'. $row['username'];
    echo 'Your Password:' .$row['password'];

0x01 报错注入

报错注入的原理,在错误信息中执行SQL 语句。通过updatexml(),extractvalue(),floor()

<?php
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
  	echo 'Your Login on';
  	}
    else
    {
    print_r(mysql_error($row));
    }
?>

报错注入

构造updatexml(),extractvalue(),floor(),有可以错误回显点

 print_r(mysql_error($row));

 0x02 布尔盲注

页面中有布尔类型的状态,可以根据布尔类型状态,对数据库中的内容进行判断

<?php
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
  	echo 'Your Login on';
  	}
    else
    {
    }
?>

 布尔盲注

布尔类型状态

if($row)
    {
      echo 'Your Login on';
      }
    else
    {
    }

布尔盲注是指构造SQL判断语句

长度判断 length(database())=8

按位测试 ascii(substr(database(),1,1))=115

对应的asll码

 0x03 延时注入

利用sleep() 语句的延时性,以时间线作为判断条件。

在注入结果不会被输出,并且不管注入成功还是失败页面始终只有一个反应时

<?php
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
?>

 0x04 堆叠查询

一次HTTP 请求,可以同时执行多条SQL 语句

d=2';update users set password='123456'--+

<?php
$id=$_GET['id'];

$con1 = mysqli_connect($host,$dbuser,$dbpass,$dbname);
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");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值