SQL注入——POST注入 HEAD注入

POST注入介绍
POST注入属于注入的一种,相信大家都知道POST和GET两种传参方式。
POST注入就是使用POST进行传参的注入,本质上和GET类型没什么区别。POST一般而言不会进行URL编码,但是GET会。

POST注入高危点:
登录框
查询框
各种与数据库有交互的框

最经典的POST注入莫过于万能密码:
’ or 1=1#
万能密码原理:
select username,password from users where username=‘admin’ and password = ’ ‘or 1=1%23’ limit 0,1(我们来看着语句逻辑,where后面是条件,username和password之间是and连接,所以两个有一个为否返回就是否,但是or 1=1,这个返回真,否 or 真=真)
下面墨者学院的这个靶场正是用到了万能密码绕过
SQL注入——POST注入 HEAD注入至于注入方式的话,跟前面的显错注入类似。

SQLMAP如何跑POST注入
–forms sqlmap 去读取页面中POST传参的表单的传参名然后进行注入。
-r 1.txt sqlmap 读取数据包文件进行sql注入,注入处可以打一个*号告诉sqlmap测试那个点。

Head注入介绍
PHP全局变量——超全局变量
php中的许多预定义变量都是超全局的,这意味着它们在一个脚本的全部作用域中都可用。
超全局变量有:
$_REQUEST 获取GET/POST/COOKIE方式的传参,COOKIE在新版已经无法获取了
$_POST 获取POST传参
$_GET 获取GET传参
$_COOKIE 获取COOKIE的值
$_SERVER 包含了诸如头信息(header)、路径(path)、以及脚本位置等信息的数组。

常用的:
$_SERVER[‘HTTP_HOST’] 请求头信息中的host内容,获取当前域名
$_SERVER[‘HTTP_USER_AGENT’] 获取用户相关信息,包括用户浏览器、操作系统等信息。
$_SERVER[‘REMOTE_ADDR’] 浏览网页的用户ip

head注入原理
利用了php的全局变量$_server获取用户的相关信息且将数据存入数据库,利用updatexml函数输入sql语句,返回信息。

updatexml()
updatexml()是更新xml文档的函数
语法:updatexml(目标xm内容,xml文档路径,更新的内容)
实际上这里是去更新了XML文档,但是我们在xml文档路径的位置里面写入了子查询,我们输入特殊字符,然后就因为不符合输入规则报错了。但是报错的时候其实已经执行了那个子查询代码。

0x7e实际是16进制,mysql支持16进制,但是开头得写0x,0x7e是一个特殊符号,然后不符合路径规则报错。
SQL注入——POST注入 HEAD注入updatexm() 这个函数一般是配合and或者or使用的,他和联合查询不同,不需要在意什么字段数
select *from news where id=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)
需要注意的是,and情况下只要一个为false,就会判断是false,所以如果and前面的条件不成立的情况下,就不会执行之后的语句,这里建议使用or

某些没有回显盲注也可以用这个updatexml()做出来。
但是报错一般有长度限制,不能输出太长的数据,尽量不要使用group_concat()。
有些盲注也可以试试看报错注入,因为有时候报错注入的致命错误会显示出来,数据库只忽略普通报错。

相关文章:

  • 2021-11-28
  • 2021-12-03
  • 2021-10-25
  • 2021-11-29
  • 2021-12-02
  • 2021-11-13
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-03
  • 2021-12-03
  • 2021-05-22
  • 2021-05-18
  • 2022-01-15
相关资源
相似解决方案