post注入、报错注入学习笔记

【靶场:7题  配备的靶场叫   绕过防护getshell】

一、WAF:Web应用防火墙
    是通过执行一系列针对http/https的安全策略来专门为Web应用提供保护的一款产品。
    工作在应用层,对来自Web应用程序客户端的各类请求进行内容检测和验证。

二、post和报错注入
1、什么是post注入
     post传参,注入点在post数据包中。


2、Burp安装配置【burpsuite】
   原理:浏览器和相关应用程序的中间 拦截、修改、重放数据包的  代理工具【中间插一杠子】。
              拦截IP+port传的数据包。


   工具:burpsuite_community_v1.7.35.jar

   使用:如上Burp所在目录,按住Shift键,鼠标右击,选择“在此处打开命令窗口(W)”,如下图所示:

 如上图所示,点击“在此处打开命令窗口(W)”后,在命令窗口中,

输入  java -jar burpsuite_community_v1.7.35.jar,运行Burp了,操作如下图所示:

    burpsuite pro v2.1.jar  需要1.8版本的jdk
   使用:需要使用破解版(loader-keygen)去调用本体版(burpsuite pro)
             直接双击破解版的jar文件就可运行,若运行不成功,可以在cmd中java -jar 破解版的jar。

 (1)、Burp设置代理:

              打开后,Proxy代理标签页的Options属性,默认拦截的IP+port。

 (2)、浏览器设置代理:

方式一:打开火狐浏览器,选项中搜索代理,设置为手动代理(http代理,IP+port)。


          

方式二:打开火狐浏览器,扩展和主题,搜索proxy,选择 FoxyProxy Standard安装完成后,会显示在浏览器的右上角,点击选项--》点击添加,新增一个代理,起个名字,配置代理。

 

(3)、抓包        

浏览器、Burp代理配置好后,Burp的Proxy代理标签页的Intercept拦截属性: 

Intercept is on是开始抓包,Intercept is off是关闭抓包;
Forward:对抓到的包进行放行;

Drop:直接丢弃抓到的包,客户端得不到响应;
Action:对找到的包进行处理【点击可以选择具体如何处理】。
      如:Send to Repeater,他会把当前抓的包,复制一份放到Repeater转发器标签页中,以便多次尝试报错点,Repeater转发器中的Go表示放行该包。

在如下页面,可以多次尝试发送该post请求,判断是否存在注入点,给test后输入',是否报错,再输入-- a,再次显示是否正常。【注意在mysql中--空格,后面可以跟解释内容、或备注内容】。

接着判断字段个数,order by 5、order by 6,哪个开始报错了,说明此时超过字段数了,最后判断出来有5个字段,没有回显点,联合注再练习下,拼装user=test' union select 1,2,3,4,5查询下,发下union、select被过滤掉了,如下图所示:

尝试拼接出被过滤的union、select关键字,如 user=test' un union ion seselectlect 1,2,3,4,5
——对union进行了过滤,组装出来一个union
——对select进行了过滤,组装出来一个select

如下图所示:

注意:浏览器代理端口、Burp代理端口两边设置需要保持一致,如本文的8888,否则开启代理后,访问页面,报错:代理服务器拒绝链接,如下图所示:

(4)、https请求,CA证书配置: 

https请求时,需要安装证书,确认Burp开启时,在浏览器中输入  IP:port  访问后,点击右上角的 CA  Certificat 下载证书,证书如何安装可以百度一下。

                 
3、POST注入、报错注入

报错注意原理1:windows资源管理器,非法路径报错。

【windows资管管理其中,路径中拼接~或!会报错(即windows文件目录中,不包含~或!时会报错),如下图所示】 

post报错注入原理2:将数据库报的错,以非法路径报错的形式拼接展示出来。

数据库函数 extractvalue(目标xml文档,xml路径):对XML文档进行查询的函数,且xml路径出现非法路径时会报错,如extractvalue('test.xlm','D::\tools\~')或select extractvalue(1,0x7e)会报错。

注意: 0x7e 是~的十六进制

 concat(str1,str2,...):将多个字符串链接成一个字符串,如: select concat('~',(select database()))。

报错回显如下语句:

select extractvalue(1,concat('~',(select database())))

select extractvalue(1,concat(1,(select database())))    

如下报错获取用户名:

user=test' a and nd extractvalue(1,concat(0x7e,(seselectlect admin_name fr from om bees_admin),0x7e)) -- a

如下报错获取密码:

user=test' a and nd extractvalue(1,concat(0x7e,(seselectlect admin_password fr from om bees_admin),0x7e)) -- a

获取到的密码是md5密文,解密时发现只有31位,发现extractvalue报错显示内容最多显示32位,本身的~不可缺少!!,后面拼接了0-9,a-z尝试解密。

注意:and也被过滤掉了,所以这里a and nd组装了下and,from也被过滤掉了,fr from om组装了下from。

updataxml()和extractvalue()作用类似,提供数据库报错显示(数据库报错回显点)

靶场练习注意点:从传送门传过去后是网站首页,有订单、留言是post访问,但尝试后没有报错点;试着给网站首页访问url后面拼接了/admin后,跳转到登录页面,隐藏的post的请求,尝试后为字符型报错点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
报错注入的攻击流程如下: 1. 攻击者通过应用程序的输入字段注入恶意代码,例如: ``` ' or 1=1 union select 1,2,3 from users where login='admin'-- ``` 2. 应用程序在处理恶意代码时发生错误,返回包含敏感信息的错误信息,例如: ``` Database error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' or 1=1 union select 1,2,3 from users where login='admin'--' at line 1 ``` 3. 攻击者从错误信息中获取敏感信息,例如: ``` select 1,2,3 from users where login='admin' ``` 以下是一个简单的 PHP 代码示例,演示了如何利用报错注入漏洞获取数据库信息: ```php <?php // 获取用户输入 $username = $_POST['username']; // 构造 SQL 查询语句 $sql = "SELECT * FROM users WHERE username = '$username'"; // 执行 SQL 查询 $result = mysqli_query($conn, $sql); // 处理查询结果 if ($result === false) { // 查询失败,返回错误信息 echo "Database error: " . mysqli_error($conn); } else { // 查询成功,输出用户信息 while ($row = mysqli_fetch_assoc($result)) { echo "Username: " . $row['username'] . "<br>"; echo "Password: " . $row['password'] . "<br>"; } } ?> ``` 在上面的代码中,如果用户输入的 `$username` 包含恶意代码,例如 `'; DROP TABLE users; --`,则会导致 SQL 查询出错并返回包含敏感信息的错误信息。攻击者可以从错误信息中获取数据库信息,并进一步利用该漏洞进行攻击。为了防范报错注入攻击,应用程序应该对用户输入进行过滤和检验,避免输入包含恶意代码,并对错误信息进行处理,避免返回包含敏感信息的错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值