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的请求,尝试后为字符型报错点。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部