POST注入/HEAD注入

本文详细介绍了POST注入和HEAD注入的概念、注入方式及其区别。包括常见的注入场景如登录框、查询框等,以及如何通过修改请求头来进行HEAD注入。
POST注入(本质是SQL注入)

POST注入就是使用POST进行传参的注入,本质上与GET注入没有任何区别,注入语句在各种框里

在真实站点上,POST注入比GET注入多,表单在有些时候是GET传参,并且最好抓包跑post注入

POST注入高入点:

  • 登录框
  • 查询框
  • 等各种和数据库有交互的框
HEAD注入

Head这里的意思指的是我们的request和response中的头部部位,其中包含了众多字段值,所以不要理解head为单独的一个字段,而是一个很多字段的集合 (比如:User-Agent,x-forwarded-for,Referer这些字段都属于HEAD)

HEAD注入本质
HEAD注入就是修改抓住了的包里的请求头中的数据,再把修改之后的包放入数据库中,修改的数据会被当作命令执行,再利用数据库中的报错来回显我们查找的信息(注意:抓取的发送包里HEAD部分任意一处都可以被注入)

head注入常见4种
ip,UA,refer,cookie
注意:
Head注入是在成功登录的情况下进行的

引用别人的总结
一、什么是post注入?
在数据提交处,提交sql语句,使系统进行查询返回相应信息
二、POST注入如何注入?
POST注入和普通注入一样,只是通过post提交数据,在提交的数据中进行注入
三、post注入和head注入的区别
head注入其实跟get、post注入有很大的相似之处,唯一不同的地方就是他从我们平常利用的url和post框装转移到了协议部分,一般的我们可以控制的输入点就在输入框和url框而不会涉及到head部分,但是有的网站他会为了保存我们的信息作为比对会把head头中的信息保存到数据库中以便下一次使用,这里就可以使用这种方法进行注入
四、post注入和get注入的区别
post注入跟get注入唯一区别在post注入的注入点在表单而不是url,他们的返回方式可能也有不同,但是大体上一样,还有一点就是POST传参没有长度限制,你甚至可以传一些危险的东西

防范方法

  • 更换表名,字段名
  • 给信息加密
  • 不展示报错信息
  • 禁止站外递交

在此漏洞中比较常用的语法:
updatexml(目标xml内容,xml文档路径,更新的内容)
具体列子: updatexml(1,concat(0x7e,(SELECT database()),0x7e),1),1)
执行语句:‘ or updatexml(1,concat(0x7e,(select database())),1),1)-- qwe

实战:
1.因为Head注入是在成功登录的情况下进行的,所以我们要先抓包,爆破账号密码(如何同时跑两个地方:https://jingyan.baidu.com/article/ca41422f054c881eae99eda0.html)

在这里插入图片描述现在就跑出了账户:admin,密码:123456

在这里插入图片描述

2.开始找注入点
在这里插入图片描述先试一试User-Agent,确认没找错,执行成功,找到了库
在这里插入图片描述在这里插入图片描述
3.接下来找表,列,flag
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.提交
在这里插入图片描述

### 复现HTML注入攻击的方法 #### HTML注入简介 HTML注入是一种常见的Web应用程序漏洞,允许攻击者通过输入特定的数据来修改页面的内容结构。这种类型的攻击通常利用的是服务器端未充分验证或转义用户提交数据的情况。 当存在HTML注入风险的应用接收到未经适当处理的输入时,可能会将其作为实际的HTML代码执行而不是纯文本显示[^1]。 #### 创建测试环境 为了安全地研究和理解HTML注入的工作原理,在受控环境中设置一个专门用于实验的安全平台非常重要。这可以通过搭建本地开发服务器并部署已知易受攻击的Web应用实例完成。确保该环境完全隔离于生产网络之外以防意外传播潜在威胁。 #### 构建简单的易受攻击表单 下面是一个简化版PHP脚本示例,它展示了如何创建一个容易遭受HTML注入攻击的登录界面: ```php <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST['username']; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login Form</title> </head> <body> <h2>User Login</h2> <form action="" method="post"> Username:<br><input type="text" name="username"><br><br> <input type="submit" value="Submit"> </form> <!-- 显示用户名 --> <p>Welcome <?php echo htmlspecialchars($username, ENT_QUOTES); ?></p> <!-- 使用htmlspecialchars防止注入 --> </body> </html> ``` 注意:上述例子中`echo htmlspecialchars()`部分是为了展示正确的做法;如果去掉此函数调用,则会形成一个典型的HTML注入点。 #### 测试向量 尝试不同的输入字符串以观察它们是如何被解释器解析并与现有文档混合在一起呈现给用户的。例如,可以试着发送如下payload: ```html <script>alert('XSS')</script> ``` 如果没有正确编码输出,浏览器将会把这段代码当作有效的JavaScript运行,并弹出警告框。然而由于前面提到的例子已经包含了防护措施(`htmlspecialchars`),所以这里不会发生真正的注入行为。 #### 防御策略建议 为了避免成为HTML注入的目标,开发者应当始终遵循以下最佳实践: - 对所有来自客户端的数据实施严格的输入验证; - 利用上下文敏感的方式对动态生成的内容进行编码(比如对于属性值使用实体编码); - 尽量减少不必要的功能暴露以及降低权限级别; - 应用最新的补丁更新保持软件栈处于最新状态。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值