GKCTF游记

昨天吧,去GKCTF玩了一下。题目很有意思,宝可梦也很好玩,我心情非常好,天台的风也很大......

不多说了,把昨天认真看过的几道题记录总结一下。这里特别感谢出题的二进制师傅们,感谢师傅们让我这个二进制彩笔做了一个下午的misc和密码学。

密码学

1.小学生的密码

题目给出的信息如下

e(x)=11x+6(mod 26)

密文:welcylk(flag为base64形式)

这是一个仿射加密。(这题昨天非常艹的就是手算算错,下次记得写脚本,叹气叹气)

仿射加密本质上还是一种单置换密码,置换密码我们最常见的就有凯撒密码。但是凯撒密码是一种移位密码,它实现了一个常数级别的置换(秘钥是区间为[0,26]的一个常数),而仿射密码实现的是一个一次的加密。

看到(mod 26),想到26个字母,这里应该实现的就是26个字母的一个闭环。

仿射函数的运算法则如下:

加密公式:Y=(AX+B)%26

解密公式:X=(A的逆元)*(Y-B)%26

写个脚本。

letter='abcdefghijklmnopqrstuvwxyz'
word='welcylk'
flag='' a=11
b=6
for i in word:
for j in range(0,len(letter)):
if i==letter[(a*j+b)%26]:
flag+=letter[j]
print(flag)

跑出来答案加个base64加密一下。

这里还有另一种脚本,也更一下,下面的脚本直接通过求解逆元来解密仿射密码。

import primefac
import base64
def modinv(a,n):
return primefac.modinv(a,n)%n a=11
n=26
d,num,flag=modinv(a,n),0,""
miwen="welcylk"
table="abcdefghijklmnopqrstuvwxyz"
for i in miwen:
num=d*((ord(i)-97)-6)%26
flag+=table[num]
flag=base64.b64encode(flag)
print(flag)

2.汉字的秘密

题目是个文件,打开就一堆汉字,当铺密码,解密结果如上所示。

解出来这么个东西,然后,,,

然后题目提示flag{小写字母},出题的小姐姐告诉flag是可读字符串,有“_”字符。

我开始以为这是把里面的小写字母提取出来,是“vk”,我联想到Virink师傅的id了(先自己嘲讽一下自己的脑洞),我以为这就是flag了......

事实证明我错了,这还是一个加密。上面的“v”和“k”是小写的,一个在第五位,一个在最后一位,flag{...}格式,“{”在第五位,“}”在最后一位,那么“EJ>C”对应的一定是“flag”这个字符串。

还是一个置换吧,“E”和“F”的差是,“J”和“L”的差是2,“>"和“A”的差是3,“C”和“g”的差是4。

验证一下,“{”的“v”的差值是5,“}”和“k”的差值是18。

miwen="EJ>CvSHMV7G9R9@?3k"
flag='' i=0
for a in miwen:
i+=1
flag+=chr(ord(a)+i) print(flag)

写个脚本,跑出:flag{you_are_good}。

逆向

1.check_in

一道逆向题目。出题师傅说在Github上看到的源码。这个项目在b站上其实也可以找得到源码。

这是一个用C语言实现了一个虚拟的电脑,上面有登录系统,看来是需要找到密码了。

我们打开IDA,找到主函数,然后找到登录函数

这个代码段肯定负责密码校验,登录密码肯定在data段,strcmp那里进去看一下

可以看见登录密码应该是“HelloWorld”

假的flag,base64解码

Why don't you try migic brick game.

好嘛,去打砖块,然后就打出这个东西

补充一下,补充一下。

我们最后看到的flag是直接输出了。一般这些直接输出的字符串存储在哪里呢?一般就是在全局数据段以数组的形式存储。那么在rdata段是不是可以直接找到flag呢?

rdata段可以找到这样一串字符串:

2i9Q8AtFJTfL3ahU2XGuemEqZJ2ensozjg1EjPJwCHy4RY1Nyvn1ZE1bZe
import base58
flag=base58.b58decode("2i9Q8AtFJTfL3ahU2XGuemEqZJ2ensozjg1EjPJwCHy4RY1Nyvn1ZE1bZe")
print(flag)

这样也可以解出flag。

还有一种劫持eip的方法,后面再补充。

写在最后:还有一道宝可梦的虚拟器题目,比较脑洞,就不写了,但是用虚拟器改动汇编代码,修改游戏设置这个我觉得可以再研究一下。PWN题目杀我,后面学习了之后再来写。这次的题目挺有意思的,有时间把其他的题目都补充上来。

我是弱鸡

我是弱鸡

我是弱鸡

重要的事情说三遍。

记一次GKCTF之旅的更多相关文章

  1. 记XDCTF的misc之旅---base64隐写

    bWFpbigpe2ludCBpLG5bXT17KCgoMSA8PDEpPDwgKDE8PDEpPDwoMTw8Cm==ICAgICAgIDEpPDwoMTw8KDE+PjEpKSkrKCgxPDwx ...

  2. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  3. 【总结】2022GDOI普及组 没得游记

    因为是线上,所以没得游记 Day -3 学校安排去7班上课,好耶! 上午全是主科,有一节生物 被你七班捧上天了 被你七班造谣说我暴踩Everyone,还传到九班,给我玩阴的是吧 下午模拟赛,初一第一 ...

  4. 剑指Offer——记中国银行体检之旅

    剑指Offer--记中国银行体检之旅   11.23完成中国银行面试,当日回到学校.当天晚上8:39收到体检通知,自己真是又气又高兴啊.气的是自己刚从北京回来,接着又要去一次.高兴的是自己通过了面试. ...

  5. 2018第一发:记一次【Advanced Installer】打包之旅

    一.前言 2017年最后几天,你们都高高兴兴的跨年,博主还在加班制作.net安装包.因为年前要出来第一版的安装包,所以博主是加班加点啊.本来想用VS自带的制作工具,不过用过的人都知道,真是非常好(to ...

  6. 记一次项目使用webuploader爬坑之旅

       因前端页面开发使用的为VUE开发,又要支持IE9,遂只有基于webuploader封装一个上传组件.地址:https://github.com/z719725611/vue-upload-web ...

  7. 记一次JVM调优之旅(斗争full gc)

    俗话说技多不压身,当年苦读<深入理解JVM>还专门整理了笔记,现在就用上了- 笔记 http://www.cnblogs.com/syjkfind/p/3901774.html [症状]  ...

  8. 记一次k8s pod频繁重启的优化之旅

    关键词:k8s.jvm.高可用 1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说, ...

  9. 【原创】记一次DouPHP站点的RCE实战之旅

    声明 本次实践是在合法授权情况下进行,数据已经全部脱敏,主要是提供思路交流学习,请勿用于任何非法活动,否则后果自负. 实战记录 信息收集 1,踩点站点 通过fofa 查到目标DouPHP框架该站点(也 ...

随机推荐

  1. 【NLP学习其三】在学习什么是嵌入之前,你应该了解什么是词语表征

    在了解什么是嵌入(embeddings)之前,我们需要先搞清楚一个词语在NLP中是如何被表示的 注:本次不涉及任何具体算法,只是单纯对概念的理解 词汇表征 One-Hot 词汇的表示方法有很多,最有名 ...

  2. 关于Ubuntu的超级管理员Root的切换及初始密码设置

    背景介绍 总有一些操作,可能需要更高的超级管理员权限才能进行,甚至才可见有些文件,所以在Linux中我们需要切换到Root用户,也就是对应的Windows的Administrator账户. 从当前用户 ...

  3. Netty 框架学习 —— 添加 WebSocket 支持

    WebSocket 简介 WebSocket 协议是完全重新设计的协议,旨在为 Web 上的双向数据传输问题提供一个切实可行的解决方案,使得客户端和服务器之间可以在任意时刻传输消息 Netty 对于 ...

  4. Jenkins CI&CD 自动化发布项目实战(下篇)

    Jenkins CI&CD 自动化发布项目实战(下篇) 作者 刘畅 时间 2020-12-04 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...

  5. POJ 1222 高斯消元更稳

    大致题意: 有5*6个灯,每个灯只有亮和灭两种状态,分别用1和0表示.按下一盏灯的按钮,这盏灯包括它周围的四盏灯都会改变状态,0变成1,1变成0.现在给出5*6的矩阵代表当前状态,求一个能全部使灯灭的 ...

  6. Redis启动正常,一段时间后报错,连不上redis

    Redis报错 1.redis在最终目标上移动临时数据库文件时出错 错误:redis:Error moving temp DB file temp-13792.rdb on the final des ...

  7. 使用Linux Deploy将闲置的安卓手机改造简易服务器

    本文将介绍我在自己闲置的小米4手机安装CentOS系统的过程.手机配置信息:MIUI 9开发板(方便ROOT).Android 6.架构 ARMv7(arm32) 准备工作 1.手机必须ROOT!!! ...

  8. 配置tomcat虚拟主机

    实例说明 本实例介绍如何配置tomcat的虚拟主机. 关键技术 关于server.xml中host这个元素,只有在设置虚拟主机是才会修改.虚拟主机是一种在一个Web服务器上服务多个域名的机制,对这个域 ...

  9. CA和SSL证书介绍

    一.什么是CA? CA是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心.CA是负责签发证书.认证证书.管理已颁发证书的机关.CA 拥有一个证书(内 ...

  10. Spring boot中相关的注解

    一.相关类中使用的注解 @RestController:REST风格的控制器 @RequestMapping:配置URL和方法之间的映射 @SpringBootApplication:应用程序入口类 ...