远程代码执行

RCE概述

image-20240816163322017
image-20240816161857400
image-20240816162208935

命令注入的相关函数。

image-20240816163420600

代码注入的相关函数

image-20240816163737055

命令拼接符号是用于rce注入命令和代码的关键。

image-20240816163906248
image-20240816164040316

pikachu靶场复现RCE漏洞

一般情况下是用来直接测试ping地址的。

image-20240816173920734

分析源码,当传递ip地址不为空时,会根据windows和linux来执行不同的ping命令,shell_exec是用于执行命令的。

image-20240816182309251

由于源码没有做任何过滤,可以注入额外的命令。这样可以获得服务器的网络信息。

image-20240816182542913

分析另一个文件的源码,eval函数会把字符串当作php代码执行。

image-20240816182721341

于是可以拿来获取php版本信息。

image-20240816182754782
image-20240816182813629

也可获取网络信息。

image-20240816183018816

dvwa靶场复现RCE漏洞

low级别,根本就没有做任何过滤。

image-20240816183910483

medium级别,分析源码,只对&&和;关键字做了过滤,所以仍然可以使用&进行拼接。

image-20240816184010117
image-20240816184052748

high级别源码分析,发现对所有关键字都做了过滤。但是其中|多了一个空格,于是我们可以不加空格来绕过注入命令。

image-20240816184138532
image-20240816184256867

impossible级别,分析源码可以得知,首先先通过expload函数,遇到.符号就进行划分,于是可以把ip地址分成四个元素的数组。再通过if判断是否为数字,若为数字才会执行ping命令,否则执行失败。

image-20240816184430005

CTF案例

eval执行

image-20240817144326972

分析源码得知,通过cmd进行参数传递,eval可以执行任何代码,于是可以用中国蚁剑连接

image-20240817144523001
image-20240817144652980

获取ctfhub即可提交完成此关卡。

image-20240817144802903

命令注入

image-20240817144948835

由于是linux可以利用分号多注入一个命令。

image-20240817145120509

通过这个payload获取这个对应文件的内容,如果不加base64将无法得知这个php里面的内容。

image-20240817145357721

进行base64解码,赋值ctfhub即可完成关卡。

image-20240817145439271
image-20240817145509768

过滤cat

image-20240817145550557

首先得知对应的flag文件。

image-20240817145729282

由于过滤了cat,那么可以使用less来进行查看,再通过base64解码即可完成此关。

image-20240817145844864

过滤空格

image-20240817145943988

先通过ls,发现flag文件。

image-20240817150043623

由于空格被过滤了,但是shell命令可以使用${IFS}来代替空格使用。这样可获取base64编码的值,解码即可得到flag结果

image-20240817150150508

过滤目录分隔符

image-20240817150527880

flag文件再此目录下,但是/分隔符被过滤,所以我们需要进入该目录才能获取flag文件内容。

image-20240817150647077

切换目录得知是哪个flag文件。

image-20240817150957043

查看该文件,解码复制flag提交即可通关。

image-20240817151042975

过滤运算符

image-20240817151126803

通过源码分析过滤了很多运算符,唯独没有过滤;

并且由于过滤了管道符|,那么用另一种写法来base64编码该文件。然后解码即可获得结果。

image-20240817151235538

综合过滤练习

image-20240817151723595

分析源码得知,对分号以及空格符号等等运算符都过滤掉了,并且也对flag、cat等关键字进行过滤。

image-20240817151953141

其中;可以通过%0a换行符来代替掉,所以需要在url来填写payload,得知flag文件在该目录下。

image-20240817152423768

由于过滤了flag关键字,我们可以通过*号来代替。

image-20240817152739698

由于过滤cat和管道符|,那么可以直接使用base64直接获取。

image-20240817153036387

RCE防御

image-20240816194751159

Last updated