for i in str_value: for j in str_value: for m in str_value: flag = "KCLWG" + i + "K8M9O3" + j + "DE" + m+ "84S9" obj = hashlib.md5() obj.update(flag.encode("utf-8")) result = obj.hexdigest().upper() if"F0AF"in result and"B1F463"in result: print(result)
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.
from Crypto.Util.number import bytes_to_long from secret import flag
m = bytes_to_long(flag) print("m =",m)
# m = 7130439814059477413771863538044548993245251660073838020411807105607801507451075252124658989164881490641702328395728224520288268685033299812787734568748819610532741806627627101671065156596093
根据题目,将flag由bytes转为long,想获得flag只需将m由long转bytes
1 2 3 4 5 6 7 8 9 10
from Crypto.Util.number import bytes_to_long, long_to_bytes """from secret import flag
m = bytes_to_long(flag) print("m =",m) """ m = 7130439814059477413771863538044548993245251660073838020411807105607801507451075252124658989164881490641702328395728224520288268685033299812787734568748819610532741806627627101671065156596093
from Crypto.Util.number import getPrime, bytes_to_long e = 65537 m = b''
p = getPrime(128) q = getPrime(128) n = p * q m = bytes_to_long(m) c = pow(m, e, n)
print("p =", p) print("q =", q) print("c =", c) print("e =", e) # p = 217873395548207236847876059475581824463 # q = 185617189161086060278518214521453878483 # c = 6170206647205994850964798055359827998224330552323068751708721001188295410644 # e = 65537
题目中给出了qpec,直接写出解密脚本解密
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from Crypto.Util.number import long_to_bytes import gmpy2
p = 217873395548207236847876059475581824463 q = 185617189161086060278518214521453878483 c = 6170206647205994850964798055359827998224330552323068751708721001188295410644 e = 65537
phi = (p-1)*(q-1) d = gmpy2.invert(e,phi) m = gmpy2.powmod(c,d,p*q)
import hashlib str_list = "0123456789!#$%&'()*+-/=<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_" str_listt = [] for i in str_list: for j in str_list: strw = i + j str_listt.append(strw) for i in str_listt: if hashlib.sha224(i.encode()).hexdigest() == "705460fa432983620cfdf55397e43161edf3367cdafe157ca0b46bc6": a1 = i else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "ec61c8382b2d371090060b081d3c567f022bb6defd91e9defcbbe0787f080882": a2 = i else: pass for i in str_list: for j in str_list: for m in str_list: n = i + j + m if hashlib.sha1(n.encode()).hexdigest() == "2b3e56ece4f0b1dadf21c5f01c1cd1124bdbbe45": a3 = n else: pass for i in str_list: for j in str_list: for m in str_list: n = i + j + m if hashlib.sha1(n.encode()).hexdigest() == "d309bebf43d3cdf7dfd1bc7e1de16f8b5b12deac": a4 = n else: pass for i in str_listt: if hashlib.sha512(i.encode()).hexdigest() == "e91e6821acdad6a65eff85d9d0b11df30392ce5f1c424058bce0029bf390d923d43d6d1ab3d84a638712bba566cbb18743ed372aa1c95ec7c83177d74e60cb20": a5 = i else: pass for i in str_list: for j in str_list: for m in str_list: n = i + j+ m if hashlib.md5(n.encode()).hexdigest() == "90f80fa3a342375d71f427bf2fd61cd2": a6 = n else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "ef2a3319810f3ae9cd5948f3229bc195d7b1558846487473b21a842f9d1b503b": a7 = i else: pass for i in str_listt: if hashlib.sha384(i.encode()).hexdigest() == "b655988f676a1494a400c8acead965a04b828e9538887e471a7985a12523cbe8027b838b49e7c548b43a633dfa81b010": a8 = i else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "688c5a4a65af33d6ddb7a8cb8e0d934e42d0f417a1b0fb6f755e050aa15a9dae": a9 = i else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "fdee4726c2847c8788b39cb69f2777cf672711bb11d9622b07f0fe23fac1480e": a10 = i else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "051603900bc7a27051b385299b0ef6c3dd2da3c6216845df7f501d9e4337cbcd": a11 = i else: pass for i in str_listt: if hashlib.sha512(i.encode()).hexdigest() == "38f3476fe78a5ac95ed2e2da792de22645c92f1466b30704c6d8d5d725325da9c742c5e8a3704caaea8b19d4b211780d32b7658958b6bb3f58f6f868f86e522c": a12 = i else: pass for i in str_listt: if hashlib.sha224(i.encode()).hexdigest() == "b162f6c91e9d02b7eba0c8dc0d4b0ac20002d47bcafa29699a54a682": a13 = i else: pass for i in str_listt: if hashlib.sha384(i.encode()).hexdigest() == "34cfd54dcf443a572cbfa7c1cb90af1b580b98d4d42274ea3c99c25390065a985c81354ddc2e54e243f5be21b90f435b": a14 = i else: pass for i in str_list: for j in str_list: for m in str_list: n = i+j+m if hashlib.md5(n.encode()).hexdigest() == "50680fbb1bc80ff7ac8d5cdd0bee77fd": a15 = n else: pass for i in str_listt: if hashlib.sha512(i.encode()).hexdigest() == "5b1fac8ceb254baeb8a794c105ef61f99b59d592ad1803b614be85fe12311a9b68307570f4e996fb20dbe82e2fcd65b0da16ecfa5577cebf178e0beabe271112": a16 = i else: pass for i in str_listt: if hashlib.sha224(i.encode()).hexdigest() == "a715591d887d66ed248ae4cc5aea34995d2feeb1130de534a7ecfdde": a17 = i else: pass for i in str_listt: if hashlib.sha256(i.encode()).hexdigest() == "472e73d796e20aa8ff9059e6316f218e0322548f661ec4dc267507ed66317404": a18 = i else: pass for i in str_listt: if hashlib.sha512(i.encode()).hexdigest() == "d364a863110f07538a9f0e6b1e42b382979a7b26a53a554ecd35b8f08634ee8067119c4ddc48b9b1a0f6c266fdaeb698dfda95f122b2314e55700aa244fbe138": a19 = i else: pass a20 = '9'
res=[] defdfs(idx,n,s:str): if idx ==n: res.append(s) return if s[idx].islower(): dfs(idx+1,n,s[:idx] +chr(ord(s[idx])-32) +s[idx +1:]) if s[idx].isupper(): dfs(idx+1,n,s[:idx] +chr(ord(s[idx])+32) +s[idx +1:]) dfs(idx +1,n,s) dfs(0,len(s),s) return res
for s in letter("pNg_and_Md5_SO_GreaT"): if hashlib.md5(s.encode(encoding='UTF-8')).hexdigest() == "63e62fbce22f2757f99eb7da179551d2": print(s) print("su") exit()
得到flag为
1
flag{Png_AnD_md5_so_GReAt}
[WEEK1] ez-misc
打开01game文件后发现841个0和1,841为29x29,判断为二维码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from PIL import Image
strings = open(r"01game.txt",'r').read()
pic = Image.new("RGB",(29,29)) num = 0 for x inrange(29): for y inrange(29): if strings[num] == '1': pic.putpixel((x,y),(0,0,0)) else: pic.putpixel((x,y),(255,255,255)) num +=1 pic.show()
defread_file(file_path): withopen(file_path, 'r', encoding='utf-8') as file: return file.read()
defcompare_files(file1_content, file2_content): flag = '' for i inrange(len(file1_content)): if file1_content[i] != file2_content[i]: flag += file2_content[i] return flag if __name__ == "__main__": file1_path = r"C:\Users\g0ubu1i\Desktop\SHCTF\Misc\WEEK1\可爱的派蒙捏\_1.jpg.extracted\txt1.txt" file2_path = r"C:\Users\g0ubu1i\Desktop\SHCTF\Misc\WEEK1\可爱的派蒙捏\_1.jpg.extracted\txt2.txt" file1_content = read_file(file1_path) file2_content = read_file(file2_path) flag = compare_files(file1_content,file2_content) print(flag)
strr = r'}\d\1\f\a\9\1\7\c\4\a\d\4\_\?\t\H\9\I\R\l\A\_\y\S\a\E\_\y\1\I\A\e\r\_\5\I\_\5\1\H\T\{\g\a\l\f' flag ='' for i in strr: iford(i) != 92: flag += i print(flag[::-1])
from PIL import Image import os from xml.dom.minidom import parse
xml_file = r"sheet2.xml" strings = "" domtree = parse(xml_file) rootNote = domtree.documentElement row = rootNote.getElementsByTagName('c') for i in row: c = i.toxml() if's="4"'in c: strings += '1' else: strings += '0' pic = Image.new("RGB",(29,29)) num = 0 for x inrange(29): for y inrange(29): if strings[num] == '1': pic.putpixel((x,y),(0,0,0)) else: pic.putpixel((x,y),(255,255,255)) num +=1
from pwn import * p=remote('112.6.51.212',31745) p.sendafter('start...',b'\n') p.recvuntil('\n') s=p.recv() s = s.replace(b"\xc3\x97", b"*") s=s.replace(b"\xc3\xb7",b"/") answer=eval(s[:-4]) p.sendline(str(answer)) for i inrange(199): p.recvuntil('\n') p.recvuntil('\n') s=p.recv() s = s.replace(b"\xc3\x97", b"*") s = s.replace(b"\xc3\xb7",b"/") answer=eval(s[:-4]) p.sendline(str(answer))
import re import requests import time s = requests.Session() url = 'http://112.6.51.212:31025/' r = s.get(url) r.encoding = 'utf-8' for w inrange(50): num = re.findall(re.compile(r'<h3>题目:(.*?)='), r.text)[0] time.sleep(1) temp = '' for i in num: if i == "÷": temp += "//" elif i == "与": temp += "&" elif i == "x": temp += "*" elif i == "异": temp += "^" elif i == "或": pass else: temp += i num = temp r = s.post(url, data={'answer': eval(num)}) print (r.text)
RE
[WEEK1]signin
使用ida打开题目后得到flag
[WEEK2] pycode
通过题目得到py文件,再编写解密脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import base64 value = '' flag = '' obfuscated_output = '==AeAF3M-tzO-giQ-AUQosDQ9tGK7MDPuhC47tDNB5Tb8Yn4sdW4' obfuscated_output= obfuscated_output.replace('t','0') obfuscated_output = obfuscated_output.replace('4','c') obfuscated_output = obfuscated_output.replace('-', '+') output = base64.b64decode(obfuscated_output[::-1]).decode() for i inrange(len(output)): temp = output[i] temp = chr(ord(temp) - 3) value += temp for i inrange(len(value)): temp = value[i] temp = chr(ord(temp) ^ 8) flag += temp print(flag)