使用dw如何给网站做电影,哪个网站有利于做课件,可信的h5制作开发,经典软文案例和扶贫农产品软文文章目录 目录 文章目录 一.uagent注入 二.refeer注入 三.Cookie注入 前文中提到万能密钥的工作原理#xff0c;然而万能密钥仅在源代码中没有代码审计#xff0c;此时才被称之为万能密钥#xff0c;而代码中有代码审计时需要分以下几种情况讨论 一.uagent注入 先看代码然而万能密钥仅在源代码中没有代码审计此时才被称之为万能密钥而代码中有代码审计时需要分以下几种情况讨论 一.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]);$fpfopen(result.txt,a);fwrite($fp,User Agent:.$uname.\n);fclose($fp);$sqlSELECT 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 ;#将查询到的数据uagentIPuname插入数据库security中的表uagents的列uagentip_addressusername$insertINSERT 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 brbr;echo br; }}
?
了解完上述代码后发现uagent没有相应的审计代码防止SQL注入因此可以使用uagent进行注入。
演示案例
注入工具Burp Suite 报文修改前 报文修改后 当修改后的报文被发送到服务器后会执行对应的程序代码如下
$insertINSERT INTO security.uagents (uagent, ip_address, username)
VALUES(1 or updatexml(1,concat(~,(select database())),3), 2, 3) #,$IP,$uname; 二.refeer注入 refeer注入和useagent的区别如下
$insertINSERT INTO security.referers (referer, ip_address) VALUES ($uagent, $IP);
报文修改前 报文修改后 三.Cookie注入
$sqlSELECT 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);}$sqlSELECT * FROM users WHERE username$cookee LIMIT 0,1;#利用sql语句是否执行成功判断输入的用户名是否等于cookie$resultmysql_query($sql);if (!$result){die(Issue with your mysql: . mysql_error());}
修改前 修改后 总结