• 学习笔记-关于过滤\<\?php标签这件事


    涉及到0day,暂不说明细节,只记录思路。

    0x00 前言:

    • 最近在审一套系统的时候,找到个sqli点
    • 该系统搭建安装的时候默认mysql账号为root
    • 对于into outfile写文件的条件也全部满足,遂想到用SQL注入写文件的方式来GetShell

    0x01 问题

    因为是用sqli写webshell,payload难免会需要绕过一些针对请求参数的过滤,这里就过滤了<、>、"等特殊字符,导致没有办法用类似 select '' into outfile '[webpath]'的方式写入webshell,其中的尖括号会被html实体化编码,但是怎么能轻言放弃呢?

    0x02 思路一

    在该系统的web目录下有很多php空文件,但是留下了

    这也是我当时立马相到的思路:通过读取phpinfo.php的内容,得到

    0x03 思路二

    hex编码进行绕过 关于SQL注入中使用hex编码来绕过一些过滤的操作应该ctf会比较常见,当时也是没想起来,姿势用时方恨忘啊,遂决定写下此文。 使用方法如下:select 0x3c3f70687020706870696e666f28293b3f3e into outfile '[webpath]',这样就不存在什么限制了。

    0x04 思路三

    师傅发来先知一篇文章,其中John 师傅在评论区详细阐述了一种也很棒的方法:UTF-7编码绕过。 总结就是一句话:php的多字节编码并启用UTF-7。例如将编码为utf-7,+ADw?php phpinfo()+ADs?+AD4-就能绕过

    .htaccess

    php_flag zend.multibyte 1
    php_value zend.script_encoding UTF-7

    或者

    .user.ini

    zend.multibyte=1
    zend.script_encoding=utf-7

    来开启这个配置。另外该师傅人真好,还讲了一个小tips,原文如下:

    如果遇到图片文件头检测,`.user.ini`可以不加注释直接打上`GIF89a`然后换行,不会报错。`.htaccess`会报500错误,用#注释掉又无法绕过,
    不过`0x00`也是`.htaccess`的注释符,所以可以用`0x00`开头的图片文件头,例如ico `00 00 01 00 01 00 20 20`,这样既能绕过文件头检测,也不会报错。

    师傅好强,学习。

    点击关注,共同学习!
    [安全狗的自我修养](https://mp.weixin.qq.com/s/E6Kp0fd7_I3VY5dOGtlD4w)


    [github haidragon](https://github.com/haidragon)


    https://github.com/haidragon

  • 相关阅读:
    fabric.js的使用
    进程控制(二)——minishell延续
    ReactiveUI MVVM框架(1)-Collections
    【全网最细】谷歌小恐龙无敌代码它来了!
    Docker 学习笔记总结(一)
    redis分布式锁实现
    关于学习编程的心得体会
    聚观早报 |2024年春节连休8天;RTE2023开幕
    优维科技7周年庆|未来可“7”,从心出发
    MyBatis 分页插件 PageHelper 6.0.0 发布
  • 原文地址:https://blog.csdn.net/sinat_35360663/article/details/127773108