一、POST注入
首先要明确注入攻击的本质是:将用户输入的数据当做代码来执行。
前提条件
用户能够控制输入
原本程序要执行的代码拼接上用户输入的数据然后执行
传参类型:传参一般有两种,一种是post另一种就是get
post注入就是使用post进行传参。本质上来说与get没有区别。
高危注入点
登录框、查询框等各种与数据库进行交互的框
万能密码
'or 1=1#
万能密码登录的是默认用户,一般是第一个用户,第一个用户一般都是管理员用户
如何利用sqlmap跑post传参
第一种方法就是在后面加上 --form 如
sqlmap -u "url" --form
这样工具会自动判断post传递的参数,然后正常爆破
第二种方法就是抓包,通过burp抓包来进行跑post传参 如
通过burp抓包,将抓到的保存到1.txt中,将1.txt与sqlmap放在同一个目录下
输入 sqlmap -r 1.txt 就可以正常爆破
另外在1.txt中可以使用 * 来标记可能存在注入点的地方
这样放入sqlmap中会对其进行专门测试
二、HEAD注入
PHP中的许多预定义变量都是超全局的,这意味着他们在一个脚本的全部作用域中都可用。
这些全局变量有:
$_REQUEST (获取get/post/cookie) 注: cookie在新版本已经无法获取了
$_POST(获取post传参)
$_GET(获取get传参)
$_COOKIE(获取cookie的值)
$_SEREVER(包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组)
$_SERVER 功能是非常强大的常用的语句有:
$_SERVER[‘HTTP_REFERER’] 获取referer请求头信息
$_SERVER[“HTTP_USER_AGENT”] 获取用户相关信息、包括用户浏览器、从操作系统等信息
$_SERVER[“REMOTE_ADDR”] 浏览网页的用户ip
HEAD注入的原理:
在你正常访问某些网站的时候,这个网站会获取你请求头中的数据并将其存储在数据库中
利用这一点,就可以在头数据中进行修改上传一些恶意数据,将其存储到目标的数据库中
如果对方的服务器没有过滤验证上传的请求头数据,就会将上传的数据执行,这样就完成了一次head攻击
插入语句的位置:
User-Agent
Referer
X-Forwarded-For
通常使用的语句
Select *from news where id=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)
updatexml用于替换目标,文件路径或者替换内容
0x7e是 “~” 的16进制
concat(a,b)负责连接ab