【Ctfer训练计划】——(五)

news2024/11/26 6:23:27

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,系统安全

每日emo:你想要的是没有生活的工作,还是怀恋那没有工作的生活

目录

 一、条件爆破

 二、随机种子爆破


 一、条件爆破

题目:web23

训练平台:ctfshow

题目描述还爆破?这么多代码,告辞!

开启容器页面如下 

那这就是一道分析代码的题了,我们来仔细读一下代码的逻辑,为了节省时间就不慢慢读了,给出逻辑如下

Get传参传入一个token变量,将传入的token变量进行md5加密赋值给新的token变量,并要求生成的md5值(也就是新token)中,

第2个字符等于第15个字符等于第18个字符,

并且第2,15,18三个位置的数字加起来除以第2个位置上的数字等于第32个位置上的数字 

也就是第2,15,18三个位置上的数字相等,并且第32个位置上数字等于3,现在要求我们找到最开始的传入的token值,那我们就可以写一个脚本来试试,传入不同的token值,判断对应的md5值是不是满足我们的条件,代码如下

# coding: utf-8
import hashlib

dic = '0123456789qwertyuiopasdfghjklzxcvbnm'
for a in dic:
    for b in dic:
        t = str(a) + str(b)
        md5 = hashlib.md5(t.encode()).hexdigest()
        try:
            if md5[1:2] == md5[14:15] and md5[14:15] == md5[17:18] and int(md5[31:32]) == 3:
                print(t)
                print(md5)
                print(md5[1:2])
                print(md5[14:15])
                print(md5[17:18])
        except Exception:
            continue

 运行一下,结果如下

跑出来传入的token应该为3j,所以我们传入的token值为3j,即

url?token=3j

此时结果如下

 成功拿下

当然,有人会问,你凭什么直接就判断它传入的token长度是两个字符,其实这里用三个,四个,五个甚至更多,都没有问题,你可以在我的代码循环上多加几层,满足它的要求都会出flag,我这里只是为了演示方便才只用了两个字符长度

 二、随机种子爆破

题目:web24

训练平台:ctfshow

题目描述爆个锤子

 容器打开后页面如下

 那这也是一道分析代码的题了,我们来仔细读一下代码的逻辑,为了节省时间就不慢慢读了,给出逻辑如下

GET方式传入一个名为r的变量,并赋值给变量r,设置一个随机数种子为372619038,如果intval($r)===intval(mt_rand()),则输出flag

这里需要注意一个特性

当mt_srand()函数有参数时,那么mt_rand()产生的随机数就是一个伪随机数,也就是固定值

当mt_srand()函数没有参数时,mt_rand()产生的随机数才是真随机数

可能有的人还是不能理解这个特性,这里给大家再演示一下
这里依然可以利用题目的代码写一段代码:

 可以看到当mt_srand()函数有参数时,mt_rand参数生成的随机数是一样的,也就是伪随机数

再来看当mt_srand()函数没参数时,如下

 可以看到没有指定种子(即参数)时,mt_rand()产生的随机数才是“随机”的

我们现在再来看这道题目,其中有这样一句代码

 mt_srand(372619038);

也就是说这里已经有了参数,即制定了种子,所以此时后面代码中的mt_rand()就是一个固定值,那我们也用这个种子看mt_rand()产生的随机数是什么

 

 所以这里mt_rand()函数产生的就是这个

1155388967

题目的逻辑中传入的r与mt_rand()产生的随机数相等时输出flag,所以我们直接GET方式传入r变量,值为1155388967就可以了,如下

 直接拿下flag,游戏概述。

注意,php版本也会影响到mt_rand()函数产生的随机数,这里我用的是php7.2的版本,如果是php5版本的,出来的随机数答案是错的,所以作者应该也用的php7的版本

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

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

相关文章

Java on VS Code 11月更新|VS Code Java 开发者超200万!

作者:Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,我们很高兴与大家分享一个好消息,现在 Visual Studio Code 上已有超过 200 万 Java 开发者,这离不开长期以来社区以…

JavaSE笔记——异常、断言

文章目录前言一、处 理 错 误1.异常分类2.声明受查异常3.如何抛出异常4.创建异常类二、捕获异常1.捕获异常2.捕获多个异常3.再次抛出异常与异常链4.finally 子句5.带资源的 try 语句三、使用断言1.断言的概念2.启用和禁用断言3.使用断言完成参数检查总结前言 在现实世界中却充…

由浅入深学安全-1

由浅入深学安全 常用术语解析 肉鸡 肉鸡也称傀儡机,是指可以被黑客远程控制的机器。 比如用灰鸽子等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。 一句话木马 一句话木马主要用来配合菜刀…

【Java系列】还在为Java运算符而烦恼吗?一篇文章带你解答心中烦恼

返回主篇章         👇 【Java】才疏学浅小石Java问道之路 Java基本运算符1. 算数运算符分类运算法则2. 关系运算符分类注意项3. 逻辑运算符分类运算法则4. 短路逻辑运算符分类运算法则5. 赋值运算符拓展6. 三元运算符格式运算法则7. 自增自减运算符分类使用…

12-Golang中的嵌套分支以及switch语句的用法

Golang中的嵌套分支以及switch语句的用法嵌套分支基本介绍基本语法switch基本介绍基本语法流程图使用细节嵌套分支 基本介绍 在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支 基本语法 if 条件表达…

声明式服务调用OpenFeign

文章目录一. OpenFeign1. Feign 与 OpenFeign二. OpenFeign的使用三. OpenFeign自定义配置1. 修改日志级别2. 超时控制四. OpenFeign性能优化五. OpenFeign最佳实践1. 继承2. 抽取PS: 本文为作者学习笔记,实际技术参加意义不大,本文将持续改进完善。 一…

Doris(二)

目录1、Doris数据的导入和导出1.1 数据导入1.1.1 Broker Load1.1.1.1 适用场景1.1.1.2 基本原理1.1.1.3 基本语法1.1.1.4 导入示例1.1.1.5 查看导入1.1.1.6 取消导入1.1.2 Stream Load1.1.2.1 适用场景1.1.2.2 基本原理1.1.2.3 基本语法1.1.2.4 导入示例1.1.2.5 取消导入1.1.3 …

蓝牙耳机什么牌子好?性价比最高的蓝牙耳机排行榜

近年来,蓝牙耳机品牌与日俱增,可供人们选择的范围也越来越大。当然,主打性价比的蓝牙耳机品牌也有很多,下面,我来给大家分享几款性价比最高的蓝牙耳机,一起来看看吧。 一、南卡小音舱蓝牙耳机 售价&#…

寒潮来袭,这款产品在跨境电商市场卖脱销

年底的寒潮来袭,全球市场热销产品分析跨境电商在年底冬季属于销售旺季,大多数的跨境电商卖家们都开始尽情努力,争取今年获得大批收入,在这个年底既是旺季也是困难季。2022年底旺季时分,有不少产品在跨境电商市场卖脱销…

jQuery index()

jQuery index() 概述 在jQuery中,我们可以使用index()方法来获取当前jQuery对象集合中“指定元素”的索引值。 语法 $(元素).index()说明 index()方法可以接受一个“jQuery对象”或“DOM对象”作为参数,不过一般情况下,我们很少会使用到…

Idea常用快捷键(MacOS和Win平台)持续更新ing~

小名在刚换MacOS系统时总结的一些Idea快捷键,这里小名把Win的对比快捷键和功能都列出来,方便像小名这样“肌肉记忆”的小伙伴顺利过渡~ 当然,这些都是小名平日工作常用的快捷键,不熟悉这些快捷键的Win平台小伙伴也可以…

springboot的核心注解详解

springboot的注解详解 Spring Boot 主要优势之一,就是“开箱即用,远离繁琐的配置”。 Spring Boot 架构没有代码生成,也不需要XML配置,有效避免大量的 Maven 导入和各种版本冲突,为 Spring 开发提供一个更快、更广泛…

数字ic后端|分享后端项目中一次分析解决问题的过程

后端ICer经常会在项目中遇到问题,如何解决问题,则体现出经验。今天遇到的一个问题,这里做个记录。同时也希望通过读这篇文章,你也能增加一个解决问题的经验。 相对来说,前端更多的是理论,后端更多的是需要…

Java基础:Lambda表达式方法引用

在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?…

学习Python中turtle模块的基本用法(6:其它函数)

除了之前文章中介绍的turtle模块的绘图函数,本文从turtle帮助文档中梳理了其它绘图或状态函数,编写复杂的绘图函数时也用得到,函数清单如下表所示: 序号函数名称说明1turtle.home返回初始坐标 (0,0),并设置朝向为初始…

MySQL重复与不重复问题

1.查询某个字段不重复的记录 当某个字段有重复的数据,而其他字段数据不一样时,需要查询这些不重复的记录,可以使用distinct关键字配合group by进行查询。 1)先看所有的数据 2)根据name查询不重复的记录 基本语法 s…

记一次线上fullgc----数据库查询返回大量数据

背景 某服务线上16台机器,晚上八点左右有4台机器突然出现fullgc,而且不止一次 处理流程 1)发现机器full gc告警时,立即dump出机器内存快照 2)下线问题机器 3)分析内存快照,找到问题对象 可以…

JAVA中IO面试题

1.什么是IO I:Input O:Output 通过IO可以完成硬盘文件的读和写。 IO流又叫输入输出流 ,输入和输出均是以内存作为参照物。 2. I/O流的分类? 2.1 输入流,输出流 以内存作为参照物, 往内存中去,叫做输入,或者叫做读…

【OpenFeign】【源码+图解】【六】创建FeignClient接口的代理(下)

【OpenFeign】【源码图解】【五】创建FeignClient接口的代理(上) 目录6.2 RequestTemplate.Factory6.3 创建SynchronousMethodHandler6.4 创建FeignInvocationHandler7. FeignInvocationHandler处理HTTP请求6.2 RequestTemplate.Factory 先看下类图 从类…

sql查询中遇到的一些小小注意点

1.sql子查询 // 最外层查询是查子查询中查询出来的结果 SELECTserverId,sum(revenue) as revenue,sum(orderCount) as orderCount,sum(refundCount) as refundCount,sum(guideRevenue) as guideRevenue,sum(cardCount) as cardCount,sum(activityCount) as activityCount,sum(…