汕头网站制作,江西建设推广网站,开发者管理,长沙好博网站建设有限公司[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识
json字符串格式#xff0c;命令失效(修改环境变量)–绝对路径使用linux命令#xff0c;%0a绕过preg_match函数#xff0c;代码审计
解题思路
打开题目链接#xff0c;发现…[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识
json字符串格式命令失效(修改环境变量)–绝对路径使用linux命令%0a绕过preg_match函数代码审计
解题思路
打开题目链接发现可以通过json格式传递命令进行命令执行但是不知道json的键名输入ls显示无法识别查看源代码后发现该输入框的name信息为cmd确定这就是键构建paylaod为{cmd:ls}抓包查看成功回显信息 发现命令正常执行准备查看根目录的文件由于是get传参所以空格先编码为%20但是发现回显hacking经过测试发现是对/进行了过滤 既然不能使用/那就直接使用cat命令查看一下index.php文件发现还是不行尝试更改cat的格式进行绕过发现还是不行。 仔细想想既然存在过滤多半碰到的函数都是preg_match该函数可以通过换行符%0a和数组进行绕过因为该函数只会匹配第一行数据除非设置了参数。所以默认为preg_match函数过滤构建paylaod{%0acmd:cat%20index.php%0a}。发现还是不行但是可以执行ls /命令了证明前面猜测没问题还绕过来了过滤 那为什么cat命令还不行执行呢都已经绕过了过滤。其实在没有限制的情况下命令还不能执行只能是该命令被屏蔽了但是使用其他查看文件的命令也都不可以。那可能就是环境变量被更改了需要使用命令的绝对路径来执行也就是/bin/cat。再次构建paylaod{%0acmd:/bin/cat%20index.php%0a}。成功回显了文件内容还得到了一个病毒提示… 发现过滤函数确实是preg_match代码的一开始就将环境变量修改了既然flag不在根目录下那很可能就在这个环境变量中查看环境变量目录结构发现了flag目录cat命令直接拿下flag 关键paylaod
{cmd:ls}{cmd:ls%20/}{cmd:cat%20index.php}{%0acmd:ls%20/%0a}{%0acmd:cat%20index.php%0a}{%0acmd:/bin/cat%20index.php%0a}{%0acmd:ls%20/home/rceserive%0a}{%0acmd:/bin/cat%20/home/rceserive/flag%0a}