SQL注入---HTTP报头注入

文章目录


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

一.uagent注入

先看代码:

php 复制代码
<?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";
	$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进行注入。


总结

相关推荐
purrrew33 分钟前
【Java ee初阶】HTTP(2)
网络·网络协议·http
火星数据-Tina42 分钟前
从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
websocket·网络协议·http
菜鸟蹦迪4 小时前
学习记录:mybatis和jdbc实现数据表作为参数的相关的sql操作
sql·学习·mybatis
Snasph6 小时前
Ubnutu ADB 无法识别设备的解决方法
ubuntu·adb
2501_915909066 小时前
开发日常中的抓包工具经验谈:Charles 抓包工具与其它选项对比
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Johny_Zhao6 小时前
Vmware workstation安装部署微软SCCM服务系统
网络·人工智能·python·sql·网络安全·信息安全·微软·云计算·shell·系统运维·sccm
kaixiang30010 小时前
sqli-labs靶场23-28a关(过滤)
数据库·sql
北极象10 小时前
Go语言处理HTTP下载中EOFFailed
开发语言·http·golang
张伯毅10 小时前
Flink SQL 将kafka topic的数据写到另外一个topic里面
sql·flink·kafka
fengye20716111 小时前
板凳-------Mysql cookbook学习 (二)
学习·mysql·adb