SUCTF2019 Signin
DIE
查一下:ELF64
,IDA
打开,没扣符号表,你🐎有了。
gmpz
……好眼熟……对了!python
里面有一个库叫做gmpy
,盲猜这个库是支持高精度的一个库。根据__gmpz_powm
不难猜出这应该是一个RSA
:
N = 103461035900816914121390101299049044413950405173712170434161686539878160984549
c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
e = 65537
分解N
:
python
脚本:
import gmpy2
p = 366669102002966856876605669837014229419
q = 282164587459512124844245113950593348271
N = 103461035900816914121390101299049044413950405173712170434161686539878160984549
c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
e = 65537
d = gmpy2.invert(e,(p-1)*(q-1))
m = gmpy2.powmod(c,d,p*q)
print(hex(m))
# 0x73756374667b50776e5f405f68756e647265645f79656172737d
然后十六进制转字符:
FlareOn6 Overlang
打开文件夹,有一个提示信息:
The secret of this next challenge is cleverly hidden. However, with the right approach, finding the solution will not take an overlong amount of time.
Hint:本题解出相应字符串请用flag{}包裹,形如:flag{123456@flare.com}。
大意就是:这个题很奇葩,要有方法……
那先按照常规思路,IDA
打开,woc
,好少:
看完了……emmmmm
……没什么想法……
倒是有类似于加密算法的地方,,但是总感觉一堆位运算不是让你去逆的……
我们找一找奇怪的点……
在调用sub_401160
函数的时候,第三个参数是0x1C
,但是阅读sub_401160
函数,第三个参数应该是第二个参数的长度,第二个参数的长度是0xAF
,再结合运行弹窗:
我们动调修改那个数值:
flag{I_a_M_t_h_e_e_n_C_o_D_i_n_g@flare-on.com}
BJDCTF2020 easy
提示:和上一个题有异曲同工之妙……哦~
运行提示:Can you find me?
为什么有一种莫名的做pwn
的感觉……
既然让我们找,那我们就找找,shift F12
,字符串没什么……
在函数表里面找找……
C
语言里面应该没有叫做ques
的函数吧(ques,,,question???)
,看了看没有函数调用它……好家伙,这不就是pwn
里面的backdoor
函数么……
直接动调,随便修改一个指令为
call 0x401520
这里建议修改main
函数里面的内容,如果修改别的库函数,可能会有各种奇奇怪怪的问题……