SQL注入基础:10.XFF注入

SQL注入基础:10.XFF注入

10.1 XFF注入攻击

X-Forwarded-For简称XFF头,它代表了客户端的真实IP,通过修改他的值就可以伪造客户端IP。

1)判断是否存在注入

使用Burp的Repeater模块对请求进行修改,分别修改X-Forwarded-For的值如下所示:

X-Forwarded-for: 127.0.0.1

X-Forwarded-for: 127.0.0.1’

X-Forwarded-for: 127.0.0.1′ and 1=1#

X-Forwarded-for: 127.0.0.1′ and 1=2#

访问的结果如下,说明存在SQL注入漏洞。

《SQL注入基础:10.XFF注入》《SQL注入基础:10.XFF注入》《SQL注入基础:10.XFF注入》《SQL注入基础:10.XFF注入》

2)查询字段数量

判断出字段数量是:4。

《SQL注入基础:10.XFF注入》

查询SQL语句插入位置。

《SQL注入基础:10.XFF注入》

3)查询数据库库名

(1)查询当前数据库库名

《SQL注入基础:10.XFF注入》

(2)查询所有数据库库名

《SQL注入基础:10.XFF注入》

像这样,构造不同的union注入语句,就可以得到完整的数据库库名,表名,字段名和具体数据。

10.2 XFF注入PHP代码

<?php
header("Content-Type:text/html;charset=utf8");
$con=mysqli_connect("localhost","root","root","bank");
mysqli_set_charset($con,'utf8');
if(!$con){
  echo "Connect failed : ".mysqli_connect_error();
}

if(getenv('HTTP_CLIENT_IP')) {
    $ip = getenv('HTTP_CLIENT_IP');
  } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
    $ip = getenv('HTTP_X_FORWARDED_FOR');
  } elseif(getenv('REMOTE_ADDR')) {
    $ip = getenv('REMOTE_ADDR');
  } else {
    $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  }

$sql="select * from login_ip where ip='$ip'";
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_array($result);
if ($row) {
	echo "id:".$row['id']."<br>";
	echo "用户名:".$row['name']."<br>";
	echo "登录地:".$row['address']."<br>";
}else{
	echo "您正在新机器上登录账号,请确定是否为本人操作!";
}

echo '<hr><br>';
echo "查询的语句是:$sql";
?>

 

    原文作者:SQL
    原文地址: https://blog.csdn.net/SouthWind0/article/details/83348706
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞