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注入漏洞。
2)查询字段数量
判断出字段数量是:4。
查询SQL语句插入位置。
3)查询数据库库名
(1)查询当前数据库库名
(2)查询所有数据库库名
像这样,构造不同的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";
?>
相关阅读
【转】15款最佳的MySQL管理工具和应用程序@TOC工欲善其事,必先利其器。几乎每个开发人员都有最钟爱的 MySQL 管理工具,它帮助开发人
C#多线程编程实战(一):线程基础1.1 简介多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力
转载自 MySQL nullif()函数 MySQL NULLIF函数简介 NULLIF函数是接受2个参数的控制流函数之一。如果第一个参数等于第二个参
跳出率和退出率分别指什么,又有什么区别呢?阅读本文前,请先思考以下几个问题:跳出率和退出率的定义是什么?跳出率和退出率的差别在哪里
mysql int(10)的含义int(M) M表示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。 在 int