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. Java hashCode&&equals

    /** 为保证向Set中添加的对象其所在的类必须要重写hashCode和equals方法: 重写的原则:hashCode和equals尽量保持一致性: 两个相同的对象equals()返回true时,那 ...

  2. 11 shell中内置关键字[[]]:检查条件是否成立

    0.[[]] [] (())的对比 1.[[]]支持正则表达式 0.[[]] [] (())的对比 [[ ]] 对数字的比较不友好,所以使用 if 判断条件时,建议用(())来处理整型数字,用[[]] ...

  3. VisibleDeprecationWarning , Creating an ndarray from ragged nested sequences... 警告怎么办

    我不是完美主义,但是至少,我在做实验的时候不能容忍有 warning 的出现. 今天使用 tensorflow.keras.datasets中的 imdb 数据集,使用 imdb.load_data( ...

  4. Linux | 文本编辑器vim

    vim 编辑器介绍 vim 编辑器是一款非常棒的文本处理工具,它会默认安装在当前所有的 Linux 操作系统上面. vim 编辑器中设置了三种模式,可以极大的提高我们的工作效率: 命令模式:控制光标移 ...

  5. 从零学习SpringSecurity

    一.简介 SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,和spring项目整合更加方便. 二.核心功能 认证(Authentication):指的是验证某个用户能否访 ...

  6. Installation failed with message INSTALL_FAILED_TEST_ONLY问题

    Android Studio连接手机进行app调试,遇到如下问题: Installation failed with message INSTALL_FAILED_TEST_ONLY. It is p ...

  7. SpringMVC中@Controller和@RequestMapping用法

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  8. Maven工程 报 Diamond types are not supported at language level '5'

    Maven工程 报 Diamond types are not supported at language level '5' 出现这种信息,一般表示的是你的language level(IDEA下J ...

  9. 【动画消消乐】HTML+CSS 自定义加载动画:怦然心跳 066

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  10. 【剑指offer】27. 二叉树的镜像

    剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...