当前位置: 首页 > news >正文

SQL注入---HTTP报头注入

文章目录

  • 目录

    文章目录

    一.uagent注入

    二.refeer注入

    三.Cookie注入 


        前文中提到万能密钥的工作原理,然而万能密钥仅在源代码中没有代码审计,此时才被称之为万能密钥,而代码中有代码审计时需要分以下几种情况讨论

一.uagent注入

       先看代码:

<?php#提供用于连接数据库的信息(账号密码等)
include("../sql-connections/sql-connect.php");
error_reporting(0);function check_input($value){#判断括号中的值是否为空if(!empty($value)){#使用substr()函数截取变量的前20个内容$value = substr($value,0,20);}if (get_magic_quotes_gpc()){$value = stripslashes($value);}#使用ctype_digit()检查变量是否全部为数字if (!ctype_digit($value)){#若不全是数字使用mysql_real_escape_string()转译变量中的特殊字符#是原先的符号实体化如单引号不再具有闭合的效果$value = "'" . mysql_real_escape_string($value) . "'";}	else{$value = intval($value);}return $value;}#使用php内置函数$_SERVER[]提取http报文中的信息$uagent = $_SERVER['HTTP_USER_AGENT'];$IP = $_SERVER['REMOTE_ADDR'];echo "<br>";echo 'Your IP ADDRESS is: ' .$IP;echo "<br>";#使用isset()函数判断变量是否为空
if(isset($_POST['uname']) && isset($_POST['passwd'])){#使用自定义函数check_input()检查使用post方式传递的账户+密码$uname = check_input($_POST['uname']);$passwd = check_input($_POST['passwd']);$fp=fopen('result.txt','a');fwrite($fp,'User Agent:'.$uname."\n");fclose($fp);$sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";#使用mysql_query()将参数放入到数据库中执行$result1 = mysql_query($sql);$row1 = mysql_fetch_array($result1);if($row1){echo '<font color= "#FFFF00" font size = 3 >';#将查询到的数据uagent,IP,uname插入数据库security中的表uagents的列uagent,ip_address,username$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";mysql_query($insert);echo "</font>";	echo 'Your User Agent is: ' .$uagent;echo "</font>";echo "<br>";print_r(mysql_error());			echo "<br><br>";echo "<br>";		}}
?>

了解完上述代码后发现,uagent没有相应的审计代码防止SQL注入,因此可以使用uagent进行注入。

演示案例:

注入工具:Burp Suite

 报文修改前

报文修改后:

当修改后的报文被发送到服务器后会执行对应的程序,代码如下:

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) 
VALUES('1' or updatexml(1,concat('~',(select database())),3)', 2, 3) #,'$IP',$uname";

二.refeer注入

 refeer注入和useagent的区别如下:

$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

报文修改前:
 报文修改后:

三.Cookie注入 

$sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";$result1 = mysql_query($sql);#使用mysql_fetch_array()将result1转换为数组$row1 = mysql_fetch_array($result1);#提取row1中的username值并赋值给cookee$cookee = $row1['username'];if($row1){setcookie('uname', $cookee, time()+3600);	}#生成cookie后
if(!isset($_POST['submit'])){$cookee = $_COOKIE['uname'];echo "YOUR COOKIE : uname = $cookee and expires: " . date($format, $timestamp);}$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";#利用sql语句是否执行成功判断输入的用户名是否等于cookie$result=mysql_query($sql);if (!$result){die('Issue with your mysql: ' . mysql_error());}

修改前: 

 修改后:


总结

http://www.lryc.cn/news/337018.html

相关文章:

  • docker安装sentinel
  • 达梦的归档日志参数ARCH_RESERVE_TIME测试
  • Linux网络 基础概念
  • 装机指导。
  • 解决windows docker context deadline exceeded问题
  • django基于python的法院执法案件管理系统
  • tcp early retransmit 和 rack 中神奇的 1/4 minrtt
  • 【强化学习实践】Gym+倒立单摆+创建自己的环境
  • 实习记录小程序|基于SSM的实习记录小程序设计与实现(源码+数据库+文档)
  • Netty NioEventLoop详解
  • 互联网大厂常见面试题目
  • TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具
  • Linux-docker安装数据库redis
  • LisJson解析配置表
  • 剑指offer10.斐波那契数列(动态规划)
  • HarmonyOS实战开发-WebSocket的使用。
  • 【前缀合】Leetcode 连续数组
  • 一些优雅的算法(c++)
  • Docker Desktop修改镜像存储路径 Docker Desktop Start ... 卡死
  • 小型企业网络安全指南
  • springboot相关报错解决
  • python 中 from import, __name__, __all__, __init__.py 作用,python的模块和导入包
  • Composer安装与配置详解
  • A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用
  • python如何判断图片为黑白还是彩色
  • C语言进阶课程学习记录-main函数与命令行参数
  • Utilize webcam to capture photo with camera
  • 【uniapp】开发微信小程序 — 注意事项
  • the python tutorial
  • AIoT人工智能物联网之AI 实战