NEEPU Sec 2023公开赛Reverse题目复现

news2024/10/6 6:46:58

文章目录

  • 一.Base
  • 二.How to use python
    • 1.程序逻辑分析
    • 2.爆破flag[11]~flag[14]
    • 3.爆破sha1
    • 4.sha256掩码爆破
  • 三.IKUN检查器
    • 1.查看程序信息
    • 2.分析程序逻辑
    • 3.button1_conClick函数
    • 4.check1函数
    • 5.check2函数
    • 6.check3函数
    • 7.check4函数
    • 8.check5函数
  • 四.junk code
    • 1.使用32位动态调试工具调试
    • 2.使用CheatEngine

一.Base

题目逻辑
1.接受输入字符串
2.encode1加密
3.encode2加密
4.将加密后的flag进行比对判断
在这里插入图片描述
encode1是个凯撒加密,位移为3
在这里插入图片描述
encode2是base64
在这里插入图片描述
解密:
先base64解密后凯撒得到welcometotheworldofctf

二.How to use python

1.程序逻辑分析

import base64
import hashlib
import sys

def abort():
    print("Wrong flag!")
    sys.exit(1)
print("Please input the flag:")
flag = input()

if len(flag) != 29:
    abort()
if flag[:5] != 'Neepu':
    abort()
if flag[16]!='a' or flag[17]!='_':
    abort()
if flag[22]!=flag[17]:
    abort()
if flag[28:] != '}':
    abort()
if base64.b64encode(flag[-4:].encode()) != b'X2t1fQ==': 
#_ku} 从倒数第四个字符开始切片,包括倒数第四个字符 base64解码即可
    abort()
if flag[-2:-15:-3].encode().hex() != '75316c745f':  
#u1lt_ 倒数第二个到倒数第15个,每隔3个取一次 十六进制转字符串即可
    abort()
if sum(ord(x) * 10000 ** i for i, x in enumerate(flag[11:15][::-1])) !=110009500490115:
#下标11到14共4个字符爆破得到n_1s
    abort()
if hashlib.md5(flag[9:3:-2].encode('utf-8')).hexdigest()!='db46a959e0f94c0a8977411ab69df11a':
#hy{ 下标九到三 查md5在线网站或者爆破都可以
    abort()
if hashlib.sha1((flag[6]+flag[8]+flag[10]).encode()).hexdigest()!= 'dcb7ec019a90e41f85181ec9f1da642a8ced1b2d':
#Pt0 sha1爆破
    abort()
if hashlib.sha256(flag.encode()).hexdigest() != 'a04f00829f27a5ead1c4ae526d6b1b0cec30ed0e56d6d71e9c001d7803e84892':
#sha256爆破
    abort()

print("You are right!")

2.爆破flag[11]~flag[14]

for a in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
    for b in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
        for c in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
            for d in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
                str=a+b+c+d
                if(sum(ord(x)*10000**i for i,x in enumerate(str[::-1]))==110009500490115):
                    print(str)#n_1s

3.爆破sha1

md5在线解密网站:https://www.bejson.com/enc/md5dsc/自行解密
sha1爆破

hashcat -a 3 -m 100 dcb7ec019a90e41f85181ec9f1da642a8ced1b2d ?a?a?a

在这里插入图片描述

4.sha256掩码爆破

最后组合到的掩码Neepu{Pyth0n_1s_a_t?a?al?a?a1_ku}

hashcat -a 3 -m 1400 a04f00829f27a5ead1c4ae526d6b1b0cec30ed0e56d6d71e9c001d7803e84892 Neepu{Pyth0n_1s_a_t?a?al?a?a1_ku}

或者使用爆破脚本

import hashlib

    string='Neepu{Pyth0n_1s_a_t??l??1_ku}'
    for a in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
        for b in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
            for c in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
                for d in "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_":
                    string_try = string.replace('?', a, 1).replace('?', b, 1).replace('?', c, 1).replace('?', d, 1)
                    hash_object = hashlib.sha256(string_try.encode())
                    hex_dig = hash_object.hexdigest()
                    if(hex_dig=='a04f00829f27a5ead1c4ae526d6b1b0cec30ed0e56d6d71e9c001d7803e84892'):
                        print(string_try)
                        

三.IKUN检查器

1.查看程序信息

可以发现是C#编写的,使用dnSpy分析
dnSpy项目地址:https://github.com/dnSpy/dnSpy
在这里插入图片描述

2.分析程序逻辑

​将程序用dnSpy打开后,点击From1,可以找到check1~check5函数
在这里插入图片描述
在这里插入图片描述
tips:可以使用上方的搜索功能搜索关键字符串从而定位
在这里插入图片描述
在这里插入图片描述

3.button1_conClick函数

可以看到做了对flag的判断,分别截取flag的不同部分并调用不同的check函数最后将加密结果拼接起来并输出结果
在这里插入图片描述

4.check1函数

md5加密,解密得到1998-8-2
在这里插入图片描述

5.check2函数

check2是sha1
在这里插入图片描述

很奇怪参考wp:Neepu Re Writeup里说sha1也是md5,而且真的能解密出来jinitaimei
查了一下也没看出个所以然,如果有大佬知道请告诉我

在这里插入图片描述

6.check3函数

给了个’-’
在这里插入图片描述
注意是两个字符串所以有两个’-’
在这里插入图片描述
在这里插入图片描述

7.check4函数

AES加密
text是密文,bytes是密钥,并且可以看到Mode是ECB,PaddingMode是PKCS7
在这里插入图片描述
可以使用密码学工具箱解出xiaoheizishiba
在这里插入图片描述

8.check5函数

sha256,也就是把上面得到的结果拼接起来进行hash(也可以运行程序通过验证得到flag)
拼接结果:1998-8-2-jinitaimei-xiaoheizishiba
sha256:b8688fc33b5786095dc70a34ad14b9623905185663fa26dcc75d3b6b1f69999e
flag:Neepu{b8688fc33b5786095dc70a34ad14b9623905185663fa26dcc75d3b6b1f69999e}
在这里插入图片描述

四.junk code

程序貌似会给flag,但是输出速度非常之慢

1.使用32位动态调试工具调试

可以使用32位debug工具调试
打开之后按f9运行程序,然后右键查找字符串
在这里插入图片描述
可以直接找到flagNeepu{it-1s-not-junk-code-1u-1u-the-qq-bin-mat}

在这里插入图片描述

2.使用CheatEngine

附加进程,选择搜索字符串并搜索Neepu{
在这里插入图片描述

然后对该地址右键并选择浏览相关内存区域
在这里插入图片描述
然后就可以看到flag
Neepu{it-1s-not-junk-code-1u-1u-the-qq-bin-mat}
在这里插入图片描述
五.奇怪的ELF
晚点继续复现…

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

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

相关文章

[Nginx 发布项目] 打包后的项目,使用nginx发布

前提 :使用的 mars3d 沐瑶大佬 修改后的nginx , - 下载地址 使用的是 Mars3D三维可视化平台 | 火星科技 修改后的 nginx 发布的服务,确保nginx发布服务时正常 ; 如果不是,那这里应该没有你想要的答案; 1、直接替换…

006 - RCC时钟树(一)时钟树内容

006 - RCC时钟树(一)时钟树内容 本节内容一定要结合RCC时钟树和官方手册学习,如果看不明白的话,建议看一下野火官方的教程,火哥讲这节讲的很详细,看一遍基本就能理解了。 上节内容中分析了启动代码&#…

Web缓存服务——Squid代理服务器应用

正向代理:代替客户端向服务端发送请求。 反向代理:代理服务端,将请求转发给多个服务端。 一、Squid代理服务器介绍 Squid 主要提供缓存加速、应用层过滤控制的功能。 1.1 代理的工作机制(缓存网页对象,减少重复请求…

2023年,Facebook Messenger群发这样做

使用SaleSmartly的企业都知道,SaleSmartly(ss客服)能在 Facebook Messenger群发信息!Facebook Messenger在全球最受欢迎通信软件中排名第三,紧追头两位的 WhatsApp和微信。善用 Facebook Messenger群发工具&#xff0c…

华为OD机试真题 Java 实现【区块链文件转储系统】【2023Q2 200分】

一、题目描述 区块链底层存储是一个链式文件系统,由顺序的N个文件组成,每个文件的大小不一,依次为F1,F2…Fn。 随着时间的推移,所占存储会越来越大。 云平台考虑将区块链按文件转储到廉价的SATA盘,只有连续的区块链…

为什么都在学python?

自然是因为Python简单易学且应用领域广! Python近段时间一直涨势迅猛,在各大编程排行榜中崭露头角,得益于它多功能性和简单易上手的特性,让它可以在很多不同的工作中发挥重大作用。 正因如此,目前几乎所有大中型互联…

毕业三年月薪才21K,真是没出息......

“害,毕业三年月薪才拿21k,真失败,真的给同龄人拖后腿!”这是人能讲出来的话?这就是凡尔赛天花板?这就是我公司的测试部门的人说出来的话,他计算机专业毕业三年,包括实习,在我们公司…

LeetCode:28. 找出字符串中第一个匹配项的下标

28. 找出字符串中第一个匹配项的下标 1)题目2)代码1.方法一:每个字符进行匹配2.方法二:截取字符串进行匹配 3)结果1.方法一结果2.方法二结果 1)题目 给你两个字符串 haystack 和 needle ,请你在…

Dropwizard 开发环境搭建

Dropwizard是一个Java框架,其目标是提供高性能、高可靠的Web 应用程序的实现。 一、使用Maven原型创建项目 1、新建项目->选择Maven Archetype 填写好项目名称、路径、选择JDK版本,这里使用JDK11及以上的版本,如下图所示: 2…

自监督对比学习系列论文(一):无引导对比学习--MOCO,SimCLR

自监督对比学习 对比学习(self-supervised learning)的应用场景是用无标记或者少标记的数据进行模型的预训练以得到一个较好的预训练模型,然后便可将该模型轻松的迁移到到下游任务上。显而易见的,对比学习的难点在于我们如何在没有…

【论文下饭】PatchTST中的channel-independence

PatchTST中的channel-independence 总结PatchingChannel-independence A Time Series is Worth 64 Words: Long-term Forecasting with Transformers 时间:2022 引用:8 ICLR 2023 代码:https://github.com/yuqinie98/PatchTST 中文参考&#…

软件开发人技能变现方案来啦~

java单体服务Uniapp客户端 欢迎大家来关注java单体服务Uniapp客户端模式开发应用程序这个模式下产品的特点互联网大厂产品特点小服务小产品-存在价值普通人慢慢挣小钱 欢迎大家来关注 你好! 这可能是你第一次来“莹未来”这里,郑重欢迎您。如果你想学习…

firewalld防火墙详细介绍

目录 一、firewalld概述 二、firewalld与iptables的区别 1.位置不同 2.配置存储位置不同 3.规则运行不同 4.防火墙类型不同 三、firewalld区域的概念 四、firewalld防火墙9个区域 1、trusted(信任区域) 2、public(公共区域&#xf…

JavaScript中的tab栏切换制作(排他思想)

文章目录 实现效果图排他思想tab栏切换制作思路代码部分 实现效果图 整个页面分为2个部分,tab_list部分(上半部分)和tab_con部分(下半部分) tab_list部分包含5个li,它们分别与tab_con部分的5个div盒子一一…

Eyeshot Fem 2023.1 你选Fem还是Ultimate Crack

Eyeshot Fem--当然选Fem Everything in Ultimate, plus Geometry meshing and Finite Element Analysis. Scope Modules Image Gallery Features Scope Eyeshot Fem edition is designed for Geometry meshing and Finite Element Analysis. Modules Geometric modules includ…

《终结拖延症》重新拥有计划每天的自信和控制力

关于作者 威廉区瑙斯, 美著名心理治疗 专家 , 拥有 超过 30 年 心的 理治疗 经 ,验 他 专 精的研究 领域 , 是 为 代 都 市 群提 供负 面 心 理 引 导 和 治疗 , 比 如 抑郁 、 心 理 亚健 康 、 拖 延 症 等 等 。 除…

redis未授权访问漏洞利用+redis日志分析

redis未授权访问漏洞利用redis日志分析 redis未授权访问 远程连接redis kali: redis-cli -h IP redis常用语句 set key “value” 设置键值对 get key 获得值 incr intkey 数字类型值加1 keys * 获取当前数据库中所有的键 config set dir /home/test 设置工作目录 config set…

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载 VMware ESXi 6 Standard 请访问原文链接:https://sysin.org/blog/vmware-esxi-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VersionRelease NameRelease …

weblogic CVE-2014-4210 SSRF漏洞

CVE-2014-4210 SSRF漏洞 Weblogic 中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中Redis、Fastcgi等脆弱组件 该漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp SSRF:服务端请求伪造,伪造存在该漏洞…

Spring : XML配置 JavaBean源码解析

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走!!!! https://github.com/DerekYRC/mini-spring 提示:以下是本篇文章正文内容,下面案例可供参考 一、xml 加载 Bean 对象 大家先…