首页 > 其他分享 >ISCTF 逆向题解

ISCTF 逆向题解

时间:2023-11-29 17:14:15浏览次数:42  
标签:逆向 gmpy2 solver 题解 ISCTF a1 add mpz

ISCTF 逆向题解

用一个晚上的时间看了看ISCTF,有的题还蛮难的(毕竟得嘎嘎猜出题人想法)

CrackMe

winhex打开exe,修改标识头PFX为UPX

然后放进UPXshell里面试试

脱了,放进ida,直接反编译得到flag

EasyRe

exeinfo看看这个是什么

64位,放进ida反编译得到一段很清晰的逻辑

反转+异或+单表代换。。。这是要爆破吗

直接搜md5得到flag

ISCTF{SNXJSIAOWCBXNAL}

BabyRe

打开附件发现是python打包的exe,直接用pydumpck解包

得到的pyc是python的字节码(类似C语言的指令码)

需要进一步反编译成python代码

首先看看这个pyc文件是否完整,比如pyc的魔术头是否还在

拖入winhex,整个文件头都丢了啊喂

无奈,把文件头补上,这里猜一下,用python3.7的pyc魔术头

运气有点逆天,直接中奖

看了一下源码,是一个简单的RSA加密,直接解密

from Crypto.Util.number import long_to_bytes
import gmpy2
from z3 import *

total = '292884018782106151080211087047278002613718113661882871562870811030932129300110050822187903340426820507419488984883216665816506575312384940488196435920320779296487709207011656728480651848786849994095965852212548311864730225380390740637527033103610408592664948012814290769567441038868614508362013860087396409860'
s = '21292789073160227295768319780997976991300923684414991432030077313041762314144710093780468352616448047534339208324518089727210764843655182515955359309813600286949887218916518346391288151954579692912105787780604137276300957046899460796651855983154616583709095921532639371311099659697834887064510351319531902433355833604752638757132129136704458119767279776712516825379722837005380965686817229771252693736534397063201880826010273930761767650438638395019411119979149337260776965247144705915951674697425506236801595477159432369862377378306461809669885764689526096087635635247658396780671976617716801660025870405374520076160'
e = '65537'
c = '5203005542361323780340103662023144468501161788183930759975924790394097999367062944602228590598053194005601497154183700604614648980958953643596732510635460233363517206803267054976506058495592964781868943617992245808463957957161100800155936109928340808755112091651619258385206684038063600864669934451439637410568700470057362554045334836098013308228518175901113235436257998397401389511926288739759268080251377782356779624616546966237213737535252748926042086203600860251557074440685879354169866206490962331203234019516485700964227924668452181975961352914304357731769081382406940750260817547299552705287482926593175925396'

p, q = Ints('p q')
solver = Solver()
solver.add((p + 1) * (q + 1) == int(s))
solver.add(p + q == int(total))
if solver.check() == sat:
ans = solver.model()
p = gmpy2.mpz(str(ans[p]))
q = gmpy2.mpz(str(ans[q]))
n = p * q
d = gmpy2.invert(gmpy2.mpz(e), gmpy2.mpz((p - 1) * (q - 1)))
M = pow(gmpy2.mpz(c), d, n)
print(long_to_bytes(M))

得到flag

easy_z3

打开附件,是一坨函数,解密的话只能用z3了

from z3 import *
from Crypto.Util.number import long_to_bytes,bytes_to_long
s = Solver()
a1 = [0]*6
for i in range(6):
a1[i] = Int('a1['+str(i)+']')

s.add(593*a1[5] + 997*a1[0] + 811*a1[1] + 258*a1[2] + 829*a1[3] + 532*a1[4] == 0x54eb02012bed42c08)
s.add(605*a1[4] + 686*a1[5] + 328*a1[0] + 602*a1[1] + 695*a1[2] + 576*a1[3]== 0x4f039a9f601affc3a)
s.add(373*a1[3] + 512*a1[4] + 449*a1[5] + 756*a1[0] + 448*a1[1] + 580*a1[2]== 0x442b62c4ad653e7d9 )
s.add(560*a1[2] + 635*a1[3] + 422*a1[4] + 971*a1[5] + 855*a1[0] + 597*a1[1]== 0x588aabb6a4cb26838)
s.add(717*a1[1] + 507*a1[2] + 388*a1[3] + 925*a1[4] + 324*a1[5] + 524*a1[0]== 0x48f8e42ac70c9af91)
s.add(312*a1[0] + 368*a1[1] + 884*a1[2] + 518*a1[3] + 495*a1[4] + 414*a1[5]== 0x4656c19578a6b1170)
s.check()
S = s.model()

for i in range(len(S)):
print(S[a1[i]],end="\n")

# 20639221941697358
# 13615593641303915
# 31015537033047360
# 32765855640286324
# 28554726411354222
# 26860403902456189

arr = [20639221941697358,13615593641303915,31015537033047360,32765855640286324,28554726411354222,26860403902456189]
for i in range(len(arr)):
print(long_to_bytes(arr[i]))

#ISCTF{N0_One_kn0ws_m@th_B3tter_Th@n_me!!!}

mfx_re

依然是UPX,不过这次是ELF的UPX,直接拖winhex改标识

upx自动脱

可以看出如果标识没有改的话,工具根本识别不出来

拖进ida,一个非常简单的自减1移动,直接cyberchef自加1就行

easy_flower_tea

看这个名字就不好惹,放进ida一看,有脏字节

先手动nop一下,up大法识别main函数成功(只有一段花指令,失望)

f5直接看代码,还真是tea算法,密钥在主函数

套代码,这个题貌似直接提交ISCTF{数字}就可以了

标签:逆向,gmpy2,solver,题解,ISCTF,a1,add,mpz
From: https://www.cnblogs.com/fuxuqiannian/p/17865304.html

相关文章

  • ICPC2022Xian L Tree 题解
    LinkICPC2022XianLTreeQuestion给出一个根为\(1\)的树,需要将树分成几个块每个块,一个块中的节点需要满足以下条件中的一个:对于所有的\(u,v\inS,\u\neqv\),满足\(u\insubtree(v)\)或\(v\insubtree(u)\)对于所有的\(u,v\inS,\u\neqv\),满足\(u\not......
  • ISCTF WEB
    圣杯战争!!!前置知识:反序列化魔法函数:(以俩个下划线开头的方法称为魔法函数)__construct()   在创建对象时候初始化对象,一般用于对变量赋初值。创建一个新的类时,自动调用该方法__destruct()   和构造函数相反,当对象所在函数调用完毕后执行.即当一个类被销毁时自动调用......
  • [ABC277G] Random Walk to Millionaire 题解
    题目链接点击打开链接题目解法首先\(O(n^3)\)的\(dp\)是显然的,令\(f_{i,j,k}\)为第\(i\)步在\(j\),当前等级为\(k\)的\([i,n]\)步获得钱数的期望,转移枚举出边即可一个很妙的优化是:贡献都是\(k^2\)的形式,所以我们考虑维护\(k\)的\(0,1,2\)次幂,即\(\sum,\sum......
  • pyc逆向以及DASCTF里的ezpython复现
    pyc文件结构分析pyc文件是Python在解释执行源代码时生成的字节码文件,可以直接由Python虚拟机执行。重点了解了下文件头,还不太了解其他部分怎么出题。参考pythonpyc加花指令pyc文件头参考深入理解python虚拟机:pyc文件结构Python代码保护|pyc混淆从入门到工具实现mag......
  • CF1900D - Small GCD 题解
    1900D-SmallGCD给定序列\(A\),定义\(f(a,b,c)\)为\(a,b,c\)中最小的次小的数的\(\gcd\),求:\[\sum_{i=1}^n\sum_{j=i+1}^n\sum_{k=j+1}^nf(a_i,a_j,a_k)\]题解目前来说有两种方法,都十分有启发意义,但是有共同的开头。考虑到\(A\)的顺序实际上没有......
  • SP19543 GSS8 - Can you answer these queries VIII 题解
    更好的阅读体验SP19543GSS8-CanyouanswerthesequeriesVIIIfhq+二项式定理。提供一个不太一样的思路。默认下标从\(1\)开始。首先插入删除,区间查询,想到可以平衡树维护或者离线下来做线段树。本文中是用的是fhq,好写一些。\(k\)非常的小,考虑对于每一个\(k\)的答......
  • 服务器数据库A的备份恢复到服务器B后出现问题解决
    消息10314,级别16,状态11,第2行尝试加载程序集ID65536时,Microsoft.NETFramework出错。服务器可能资源不足,或者程序集可能不受信任,PERMISSION_SET=EXTERNAL_ACCESS或UNSAFE。如上错误提示,解决办法: alterdatabasedatabasenamesettrustworthyon还有更改数据库......
  • JS逆向——某度翻译
    JS逆向——某度翻译文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,如有侵权,请联系作者立即删除!一、定位接口目标网站:aHR0cHM6Ly9mYW55aS5iYWlkdS5jb20vP2ZyPXBjUGluemh1YW4=使用Chrome浏览器打开抓包工具输入:HelloWorld!通过观察可以发现,右侧直接出现翻译结......
  • 【题解】CF1550E Stringforces
    标签:DP\(B^+\)阅读须知:本题解较为详细地讲述的该题解法的思路和来龙去脉,但篇幅较长,请耐心阅读。Step1从题面获取信息我们考虑,因为最大值最小,所以我们首先想到二分答案。然后我们又看到\(k\leq17\)这个限制,所以会想到可能是关于一个\(2^k\)之类的复杂度。以上就是我......
  • js逆向-Mytoken请求参数逆向
    声明本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!前言目标网站:aHR0cHM6Ly93d3cubXl0b2tlbmNhcC5jb20v接口:aHR0cHM6Ly9hcGkubXl0b2tlbmFwaS5jb20vdGlja2VyL2N1cnJlbmN5bGlzdGZvcmFs目标参数:code......