码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • buuctf re刷题1


    目录:

      • reverse3
      • helloword
      • 不一样的flag
      • SimpleRev
      • Java逆向解密
      • [GXYCTF2019]luck_guy
      • [BJDCTF2020]JustRE

    零碎操作:

    ida shift+e 指定字符串的特定格式

    ida shift +f12 看字符串

    ida ctrl+x 指定字符串交叉引用

    reverse3

    找到字符串 e3nifIH9b_C@n@dH

    每个字符与对应下标相减后base64解码

    import base64
    str=[0x65, 0x33, 0x6E, 0x69, 0x66, 0x49, 0x48, 0x39, 0x62, 0x5F, 
      0x43, 0x40, 0x6E, 0x40, 0x64, 0x48, 0x00]
    for i in range(len(str)-1):
        str[i]=chr(str[i]-i)
    str.pop()
    str=''.join(str)
    print (str)
    print (base64.b64decode(str))
    

    helloword

    是Android的apk文件,用apk ide 打开

    找到helloword的main那里,看到flag

    不一样的flag

    是一个走迷宫

    应该要观察到后面判断的1和**#**,与上面有个字符串长度为25

    *11110100001010000101111#

    可以分为5列

    *1111

    01000

    01010

    00010

    1111#

    对应flag是

    flag{222441144222}

    SimpleRev

    小端程序的话,转换ascll码要反一下,(应该)

    可得到两个字符串

    text=killshadow

    key=ADSFKNDCLS

    转换为小写key=adsfkndcls

    思路就是把key的每个字符经过结合flag的每个字符,特定操作后变成text的每个字符

    脚本的话用枚举,然后模仿程序的操作,满足条件就break然后找下一个字符

    (感觉逆着写写不出来)

    #SimpleRev
    text=['k','i','l','l','s','h','a','d','o','w']
    key=['a','d','s','f','k','n','d','c','l','s']
    flag=[]
    v3=0
    for i in range(len(text)):
        for k in range(65,123):
            if ( ((k<=96 or k>122)and (k>64 and k<=90))or (k>96 and k<=122) ):
                if (ord(text[i])==(k-39-ord(key[v3%len(text)])+97)%26+97):
                    flag.append(chr(k))
                    v3+=1
                    break
    flag=''.join(flag)
    print(flag)
    

    Java逆向解密

    用jd-gui打开

    然后观察下,就是flag每个ascll+64异或0x20要等于key的每个数值

    key=[180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 
            133, 191, 134, 140, 129, 135, 191, 65]
    flag=[]
    for i in range(len(key)):
        flag.append(chr(key[i]-64^0x20))
    flag=''.join(flag)
    print("flag{"+flag+"}")
    

    [GXYCTF2019]luck_guy

    这种elf文件都是小端的,ascll码要反以下用reverse()方法

    找到字符串GXY{do_not_

    根据程序功能减-1-2,组合就能得到flag了

    #[GXYCTF2019]luck_guy
    s=[127,102,111,96,103,117,99,105]
    s.reverse()
    for i in range(1):
        for i in range(len(s)):
            if (i%2==1):
                s[i]-=2
            else:
                s[i]-=1
    for i in range(len(s)):
        s[i]=chr(s[i])
    flag=''.join(s)
    print('GXY{do_not_'+flag)
    

    [BJDCTF2020]JustRE

    发现字符串BJD{%d%d2069a45792d233ac}

    两个fomat,跟进一看有19999,和0两个参数,放进去就行

  • 相关阅读:
    时域卷积定理&频域卷积定理
    vue学习之组件化开发
    Flask框架配置Celery-[2]:将前端上传的文件,通过异步任务保存,异步处理上传的文件
    【软件测试】测试人的职责,我就是不当背锅侠......
    [C]编译和预处理详解
    X2-VLM: All-In-One Pre-trained Model For Vision-Language Tasks论文笔记
    GEE案例——计算指定区域的云量所占的面积占比(以2019年-2022年北京市为例)
    网络安全学习心得分享~
    完美PDF打印:PDFPrinting.NET Crack
    群晖上搭建Ghost博客
  • 原文地址:https://blog.csdn.net/m0_51251108/article/details/127122876
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号