zoukankan      html  css  js  c++  java
  • pwnable.kr cmd1之write up

    看一下源代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 int filter(char* cmd){
     5     int r=0;
     6     r += strstr(cmd, "flag")!=0;
     7     r += strstr(cmd, "sh")!=0;
     8     r += strstr(cmd, "tmp")!=0;
     9     return r;
    10 }
    11 int main(int argc, char* argv[], char** envp){
    12     putenv("PATH=/fuckyouverymuch");
    13     if(filter(argv[1])) return 0;
    14     system( argv[1] );
    15     return 0;
    16 }

    我们看到filter函数过滤了flag,sh,tmp,我们输入的参数在system执行,然而我们过滤了一些参数,对于linux系统,我们的通配符还没有过滤。题中的思路是我们输入的参数过滤了flag,sh,tmp后system执行该参数。于是我们输入如下,并得到flag:

    补充:linux通配符

    * - 通配符,代表任意字符(0到多个)
    ? - 通配符,代表一个字符
    # - 注释
    / - 跳转符号,将特殊字符或通配符还原成一般符号
    | - 分隔两个管线命令的界定
    ; - 连续性命令的界定
    ~ - 用户的根目录
    $ - 变量前需要加的变量值
    ! - 逻辑运算中的""(not)
    / - 路径分隔符号
    >, >> - 输出导向,分别为"取代""累加"
    ' - 单引号,不具有变量置换功能
    " - 双引号,具有变量置换功能
    ` - quote符号,两个``中间为可以先执行的指令
    () - 中间为子shell的起始与结束
    [] - 中间为字符组合
    {} - 中间为命令区块组合
    Ctrl+C - 终止当前命令
    Ctrl+D - 输入结束(EOF),例如邮件结束的时候
    Ctrl+M - 就是Enter
    Ctrl+S - 暂停屏幕的输出
    Ctrl+Q - 恢复屏幕的输出
    Ctrl+U - 在提示符下,将整行命令删除
    Ctrl+Z - 暂停当前命令
    && - 当前一个指令执行成功时,执行后一个指令
    || - 当前一个指令执行失败时,执行后一个指令
    
     
    
     
    
    其中最常用的是*、?、[]和 ‘。下面举几个简单的例子:
    
    1,ls test*             <== *表示后面不论接几个字符都接受(没有字符也接受)
    
    2,ls test?            <== ?表示后面当且仅当接一个字符时才接受
    
    3,ls test???       <== ???表示一定要接三个字符
    
    4,cp  test[1~5]  /tmp      <== test1, test2, test3, test4, test5若存在,则复制到/tmp目录下
    
    5,cd  /lib/modules/' uname  -r'/kernel/drivers        <== 被 ' ' 括起来的命令先执行 
  • 相关阅读:
    法瑞意游记+攻略 一(巴黎 凡尔赛、荣军院,十二月二十六)
    [转]Exchange Server 2013部署系列之一:部署环境介绍
    [转]在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
    DinnerNow案例分析
    [转]DPM2012系列之六:在Win7上安装DPM远程管理控制台
    Windows Phone Dev Center Develop
    [转]DPM2012系列之十:备份exchange2010数据库
    [转]DPM2012系列之五:开启最终用户恢复功能
    Windows Phone Dev Center How do I join?
    [转]DPM2012系列之三:浅谈硬件需求
  • 原文地址:https://www.cnblogs.com/liuyimin/p/7338117.html
Copyright © 2011-2022 走看看