只能说这比赛平台**,题目**简单记录一下,毕竟自己也做了好久
打开程序是下黑白棋,要战胜AI才能获得flag。
利用ollydebug打开,找到跳入,单步步入真正的程序,然后中文搜索得到flag。
利用IDA打开能够很清楚的看明白逻辑,encode函数和judgement函数都是注明了的。Base加密自定义table。
Exp:
#!/usr/bin/env python
#_*_coding:utf-8_*_
import base64
import string
base64_enc_table=string.ascii_uppercase+string.ascii_lowercase+"0123456789"+"\\"+"+"
base64_enc="Nseky2SjMiUq9tf/BEIlaJxAwPT07V+pWX6LFgG3ZmOHK4Y8uQhRz1oDc5nCrdvb"
v7 = 'X4DPXQGP'
v8 = 'uWRtcMSt'
v9 = 'RyotcBR9'
v10 = 'FJk9uBot'
v11 = 'cWlP5alP'
v12 = 'RFRt1MRt'
v13 = '=z3w'
flag_enc=v7[::-1]+v8[::-1]+v9[::-1]+v10[::-1]+v11[::-1]+v12[::-1]+v13[::-1]
print flag_enc
base_flag=""
for i in flag_enc:
if i=="=":
base_flag+=i
else:
print i
base_flag+=base64_enc_table[base64_enc.index(i)]
print base64.b64decode(base_flag)
ida打开之后发现异或,但是根据题目提示do you find it继续往下看,发现if判断后的执行。对k进行爆破
Exp:key_word = "STUVWXYZ{}abcdefghijklmnopqrstuvwxyz_!ABCDEFGHIJKLMNOPQR"
key_list = [0x1f, 0x3a, 0x1d, 0x07, 0x1c, 0x14, 0x0d, 0x10, 0x08, 0x3d, 0x10,0x0a, 0x23, 0x0d, 0x10, 0x37, 0x0a, 0x23, 0x3e, 0x07, 0x20, 0x04,0]
test_key = [33, 89, 145, 201, 5, 61, 117, 173, 229]
tempstr_list = []
key = 0
forturn inrange(10000000):
tempstr = ""
k += 0.1
fortemp_key inkey_list:
temp_key = int(temp_key * k) %56
tempstr += key_word[temp_key]
if"flag"intempstr andtempstr notintempstr_list:
print(tempstr)
tempstr_list.append(tempstr)
input("")
同样的爆破思路
t1 = [17, 19, 27, 55, 5, 11, 0, 6, 54, 52, 14, 20, 26, 0, 17, 4, 26, 18, 12, 0]
t2 = "STUVWXYZ{}abcdefghijklmnopqrstuvwxyz_!ABCDEFGHIJKLMNOPQR"
res = [199, 235, 202, 228, 200, 235, 195, 220, 212, 191, 110, 186, 205, 107, 10]
for i in range(20):
for j in range(56):
res = ''
for k in range(20):
res += t2[(t1[(k + i) % 20] + j) % 56]
if res[4] == "{":
print res
五、re_easy
enflag = [0x66,0x6c,0x61,0x69,0x7b,0x57,0x61,0x78,0x6f,0x67,0x61,0x75,0x89,0x61,0x6e,0x7b,0x9d]
flag = ''
fori inrange(len(enflag)):
enflag[i] = enflag[i] ^ i
printenflag[i]
fori inrange(len(enflag)):
flag += chr(enflag[i]-i)
print(flag)
Max_easy_Re
先利用patch过反调试
动态跟一遍就可以看到了
固定数组去下标即可
先吧PYC进行反编译
开头就是rc4加密然后有些错误改正一下改交换值
然后爆破key然后爆破flag
#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
import random
import base64
from hashlib import sha1
def fun1(data, key):
x = 0
box = range(256)
for i in range(256):
x = (x + box[i] + ord(key[i % len(key)])) % 256
t = box[i]
box[i] = box[x]
box[x] = t
flag = ""
x = 0
y = 0
out = []
for char in data:
x = (x + 1) % 256
y = (y + box[x]) % 256
t = box[x]
box[x] = box[y]
box[y] = t
for i in range(256):
temp = chr(i ^ box[(box[x] + box[y]) % 256])
if temp == char:
flag += chr(i)
print i
break
return flag
def tencode(data, key, encode = base64.b64encode, salt_length = 16):
salt = base64.b64decode(data)[:16]
data = base64.b64decode(data)[16:]
data = fun1(data, sha1(key + salt).digest())
return
if __name__ == '__main__':
data = 'nKgI13JDX8qpFyUcvsnZqyKxb8Zfv9jCnrWul2knc8ZzhlfDpPxZmA=='
key = "5723"
print tencode(data = data, key = key)
'''
for i in range(1000,9999):
key = str(i)
temp = fun1("flag{",sha1(key+slat).digest())
if temp == data.base64.b64decode(data)[16:21]:
print "key: " + key
key = 5723
'''
原题利用pintools直接爆破,github上有ctf-pins,范例题就是这个题目
flag{dr4g0n_or_p4tric1an_it5_LLVM}
原题:https://alessandrogar.io/post/bsides2017-disarming-a-raspberry-pi/
FlgG76673250
根据符号链接找到原题
https://github.com/vidar-team/hctf2015-all-problems/tree/master/re150
flag:HCTF{UareS0cLeVer1234}
key利用idc脚本可以输出,利用几个key一Google就出现了原题
https://github.com/n0l3ptr/codegate/tree/master/EasyCrack_101
FLAG{Thank_U_4 s0lving_MY_Pr0b…u_@re_vEry_genius!!!}
利用winhex打开
从中分离出zip压缩包
利用zip修复工具修复后进行解压
得到pdf文件,同样利用工具修复
最后再解压文件中找到flag
更改了图片crc校验值,得到一个比较清晰的图
利用stegsolve
然后进行对比得出flag
4CFFD79DC13D2B4D515E8E87A79B08D8
解压脚本解压出文件发现隐藏的flag.txt
最后对其中的文字进行频率分析
尝试几次后得到flag
cdtuhiyjnsvkbemo
护网杯原题,迟来的签到
社会主义加密?
enflag1 = 'ADmin13trat0r'
enflag2 = '4331d3b4e9431e7'
flag = ''
for i in range(len(enflag1)):
if ord(enflag1[i]) == 97 :
flag += chr(122)
elif ord(enflag1[i]) == 65 :
flag += chr(90)
else:
flag += chr(ord(enflag1[i]) - 1)
print flag
#本身为数字的就不需要改
#第二个就是将数字倒置
#第二个字符串进行了顺序调换
利用word文档进行自负的替换最后出了
T0o0o0o0o0P______1m_h4V1nG_FuN_r1gHt_n0W_4R3_y0u_h4v1ng_fun______K3K!!!
利用社工字典生成器,生成字典
字典攻击得到密码为xiaoming_22
得到里面的flag文件
1a3dcc6272c5ed3531d1ea1dfc3b8cec
。。。。。