2024领航杯-初赛WP(二)

admin 2024年12月11日23:29:00评论28 views字数 3748阅读12分29秒阅读模式
2024领航杯-初赛WP(二)

点击上方蓝字关注我们

郑重说明

2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)

    数字人才创研院秉承探究学习与交流知识的原则,所有发布的技术文章仅供参考,目的在于助力你获得更多知识;与此同时,让我们共同遵守《网络安全法》,未经授权请勿利用文章中的技术内容对任何计算机系统进行非授权操作,否则对他人或单位而造成的直接或间接后果或损失,均由使用者本人负责。

   公众号发表的文章如有涉及您的侵权,烦请私信联系告知,我们会立即删除并对您表达最诚挚的歉意!感谢您的理解!

Purpose of recommendation

2024领航杯-初赛WP(二)

推荐观点

2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
赛事的开展不仅给广大参赛学生提供了网络安全实战平台,同时也搭建了发现人才和人才交流的平台。   竞技赛场,你追我赶,各参赛选手以竞赛活动为契机,以赛促学、以赛促训,畅享不一样“饕餮盛宴”的竞赛。   知己知彼,百战百胜,小编分享官方WriteUp,旨在让大家了解赛事赛题的难度变化与知识范畴,发现团队薄弱之处,提升团队技术能力。   推荐指数:★★★★★
2024领航杯-初赛WP(二)

01

CRYPTO_Evaluate

试题代码如下:

# -*- coding: utf-8 -*-from Crypto.Util.number import bytes_to_longfrom secret import flagimport randomimport gmpy2def genPrime():    while True:        p = random.getrandbits(512)        tp = random.getrandbits(20)        if gmpy2.is_prime(p**4 + tp):            return p**4 + tp, tpp, tp = genPrime()q, tq = genPrime()m = bytes_to_long(flag)e = 0x10001n = p*qc = pow(m, e, n)print("n = %s" % n)print("e = %s" % e)print("c = %s" % c)print("tp = %s" % tp)print("tq = %s" % tq)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)

02

MISC-veee

1、打开附件文件,看到2个文件,一个没有后缀,一个为文本文件

2、先看文本文件,发现为一组1W个的身份证号码清单,粗略检查后发现部分身份号码不正确,存在异常字符a

3、先使用python脚本提取错误的身份证号码,进行二次分析,分析发现最后一位似乎有问题,改下代码提取最后一位并组合

import randomimport refrom datetime import datetime, timedelta#需引入constant.py文件import constant as constclass IdNumber(str):    def __init__(self, id_number):        super(IdNumber, self).__init__()        self.id = id_number        self.area_id =int(self.id[0:6])        self.birth_year =int(self.id[6:10])        self.birth_month =int(self.id[10:12])        self.birth_day =int(self.id[12:14])    def get_area_name(self):        """根据区域编号取出区域名称"""return const.AREA_INFO[self.area_id]    def get_birthday(self):        """通过身份证号获取出生日期"""return "{0}-{1}-{2}".format(self.birth_year, self.birth_month, self.birth_day)    def get_age(self):        """通过身份证号获取年龄"""        now = (datetime.now() + timedelta(days=1))yearmonthday= now.year, now.month, now.day        if year== self.birth_year:return0else:            if self.birth_month >monthor (self.birth_month ==monthand self.birth_day >day):returnyear- self.birth_year -1else:returnyear- self.birth_year    def get_sex(self):        """通过身份证号获取性别, 女生:0,男生:1"""returnint(self.id[16:17]) %2    def get_check_digit(self):        """通过身份证号获取校验码"""        check_sum =0for i inrange(017):            check_sum += ((1<< (17- i)) %11*int(self.id[i])        check_digit = (12- (check_sum %11)) %11return check_digit if check_digit <10else'X'@classmethod    def verify_id(cls, id_number):        """校验身份证是否正确"""        if re.match(const.ID_NUMBER_18_REGEX, id_number):            check_digit = cls(id_number).get_check_digit()return str(check_digit) == id_number[-1]else:return bool(re.match(const.ID_NUMBER_15_REGEX, id_number))def check():withopen('sfz.txt''r', encoding='utf-8'as file:for line in file:value= line.strip()            if  IdNumber.verify_

4、观察字符的规律,提取最后一位得到一串编码,解编码后,得到密码

2024领航杯-初赛WP(二)
746869735f69735f7077645f6a37316e617332this_is_pwd_j71nas2

5、根据另一个文件名猜测为veracrypto加密卷,加载文件后,尝试使用之前的密码,可以成功解开。

2024领航杯-初赛WP(二)

6、可以看到flagggg.txt文件,但是内容提示fakeflag,根据ntfs卷猜测可能为ntfs数据流隐写,直接使用NSE工具分析发现存在隐藏数据,导出后,得到正确的flag。

03

RE_easystd

2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)

04

WEB_ACXI_

访问网站就是简单的登录注册界面。可以注册个账号登录(test/123456),提示需要admin才能拿到flag。

2024领航杯-初赛WP(二)

简单看下http包发现这个网站没有cookie,那肯定依靠啥东西来鉴权。点一下GetFlag,发现传了3个参数,其中HIDDEN_HIX=773094245109,看起来像是鉴权的。重新登录下HIDDEN_HIX=244813267701,说明还是有变化不是固定的。

转为hex后观察下,发现仅前2位变化了。

hex(773094245109)0xb4000202f5hex(244813267701)0x39000202f5

大胆猜测前2位是随机的,不参与验证,那直接去掉是不是也可以。将HIDDEN_HIX改为131829,也可以通过验证是相同的用户。

0x202f5 = 131829

还有个功能是修改密码,修改为1234567后,发现HIDDEN_HIX变了,是721554637612。

hex(721554637612)0xa80002032c

观察HIDDEN_HIX的变化,后面从0x02f5变为0x032c。相减下发现多了55,即ascii的7。我们把密码从123456改为1234567后,发现多加了7的ascii,合理猜测后面的是把用户名或密码的ascii相加。验证下,发现是对的:

hix = 0for c in 'test123456': hix += ord(c)       hex(hix)# 0x2f5 hix = 0                                for c in 'test1234567': hix += ord(c)       hex(hix)                               # 0x32c                             

那就剩下最后一部分了,0x2了。

0x0202f5   ^

可以大胆合理猜测这个是账号注册顺序。那第一个应该就是admin了。可以推测:

0x01????

由于admin+密码的ascii码的和不会太大,可以进行爆破,从0x10000+521(admin)=66057开始爆破就行。发现66723就是admin的HIDDEN_HIX,拿到flag。

2024领航杯-初赛WP(二)

如果喜欢,敬请关注,后期内容更精彩!

2024领航杯-初赛WP(二)
2024领航杯-初赛WP(二)

END

原文始发于微信公众号(数字人才创研院):2024“领航杯”-初赛WP(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月11日23:29:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2024领航杯-初赛WP(二)https://cn-sec.com/archives/3495050.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息