一個卑微的web狗在角落瑟瑟發抖,又是一題未出,密碼基本都是全秒,拿了一個一血,兩個2血,misc基本和后面和隊友一起做的,全是一步之遙,
想起這次的misc就睡不著,起來趕了一篇wp,記錄一下,
有些題目的名字忘了,就寫個序號,把將就看把,
crypto
1
密文
Jxyi yi oekh tqo.Jxyi yi oekh suburhqjyed., qdt jxu vbqw yi vv97v97t5t1ss32t9q5u62s2uu1t2v2s, ikrcyj myjx vbqw qdt {}
該題是替換密碼
直接用在線網站爆破
https://quipqiup.com/

多確定兩個完整的單詞后 結果就出來了
明文
This is your day.This is your celebration., and the flag is ff97f97d5d1cc32d9a5e62c2ee1d2f2c, submit with flag and {}
2 bullshit
這題是原題
安恒7月月賽
直接上代碼
# flag = b'flag'
def pairing(a,b):
shell = max(a, b)
step = min(a, b)
if step == b:
flag = 0
else:
flag = 1
return shell ** 2 + step * 2 + flag
def encrypt(message):
res = ''
for i in range(0,len(message),2):
res += str(pairing(message[i],message[i+1]))
return res
temp = '1186910804152291019933541010532411051999082499105051010395199519323297119520312715722'
fuzz = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@_.<>?/;!$#{}-"
fuzz = list(fuzz)
print(fuzz)
flag = 'flag'
for k in range(20):
for i in fuzz:
for j in fuzz:
flag_temp = flag + i + j
# print(flag_temp)
res = encrypt(flag_temp.encode('utf-8'))
if res in temp:
# print(res)
# print(flag_temp)
flag = flag_temp
print(flag)
3
這題是一個base64的換表
直接附上一個b64加解密的腳本
# coding:utf-8
# s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
s = "PackmybxwthfivdzenlqorjugspACKMYBXWTHFIVDZENLQORJUGS0123456789+/"
def base64_encode(inputs):
# 將字串轉化為2進制
bin_str = []
for i in inputs:
x = str(bin(ord(i))).replace('0b', '')
bin_str.append('{:0>8}'.format(x))
# print(bin_str)
# 輸出的字串
outputs = ""
# 不夠三倍數,需補齊的次數
nums = 0
while bin_str:
# 每次取三個字符的二進制
temp_list = bin_str[:3]
# print(temp_list)
if (len(temp_list) != 3):
nums = 3 - len(temp_list)
while len(temp_list) < 3:
temp_list += ['0' * 8]
temp_str = "".join(temp_list)
# print(temp_str)
# 將三個8位元組的二進制轉換為4個十進制
temp_str_list = []
for i in range(0, 4):
temp_str_list.append(int(temp_str[i * 6:(i + 1) * 6], 2))
# print(temp_str_list)
if nums:
temp_str_list = temp_str_list[0:4 - nums]
for i in temp_str_list:
outputs += s[i]
bin_str = bin_str[3:]
outputs += nums * '='
print(outputs)
def base64_decode(inputs):
# 將字串轉化為2進制
bin_str = []
for i in inputs:
if i != '=':
x = str(bin(s.index(i))).replace('0b', '')
bin_str.append('{:0>6}'.format(x))
# print(bin_str)
# 輸出的字串
outputs = ""
nums = inputs.count('=')
while bin_str:
temp_list = bin_str[:4]
temp_str = "".join(temp_list)
# print(temp_str)
# 補足8位位元組
if (len(temp_str) % 8 != 0):
temp_str = temp_str[0:-1 * nums * 2]
# 將四個6位元組的二進制轉換為三個字符
for i in range(0, int(len(temp_str) / 8)):
outputs += chr(int(temp_str[i * 8:(i + 1) * 8], 2))
bin_str = bin_str[4:]
print(outputs)
base64_decode('sIUXs3LUgSgUdjsHvIo5vbm2gSH3g2o3iTrXi2o3vjo3i2o0vx0=')
ps: 前幾天剛把base64原理看了一下 ,順便擼了一個能用的腳本
4 rsa
這題就是一個簡單的rsa
直接上代碼
import gmpy2
from Crypto.Util.number import getPrime,inverse,bytes_to_long,long_to_bytes
phi_t = 0x9360ce5eb573dcdb85af4cef9468a29323aa9d26f8cef9a2b004f3d9922c12c45f74b85c00db81fa34de4714a6a95b676618a3ea8155df7095056c079531233f3e80cc372263ccaf4d42e5b7aa637586b673e30820a2d7eba201691371e138e4b3e45ed756cc6faac6e6f4686dfb56e7fcd361ac312d0f7110e76f8fee5cff75894e8a2f4e50ffd0ef9db7f0eb685a6b3038892a96b355ea1d154b77db6e97a3facd36dd8ee14b94cb98a21f4cea1412e7c72ea4cad530995ade3f5aae3444204dfc0d6ede436427
e= 0x2e43a6e5
n= 0x9360ce5eb573dcdb85af4cef9468a29323aa9d26f8cef9a2b004f3d9922c12c45f74b85c00db81fa34de4714a6a95b676618a3ea8155df7095056c079531233f3e80cc372263ccaf4d42e5b7aa637586b673e30820a2d7eba201691371e138e4b3e45eda7d04ff5b6a850dd6c5d5dcaab3588c8acc1b56794cbef1337664afd984d491d8134e3c1d661414278836b76e0de6a4e9a16f1c3f6abe86448dd065f317515d09888955eba578c5579381f59a5355584d1b2003c93660ada247f13db12aadc74a6801803b
c= 0x49c627fa815685ad85060c0891e2cd04b5cd722cd82cc809835cb43da79b21ce547f4139da69a67e201c5f4643ff91306b92ae7d1e3cc96a01e7074c7016058bf607038061fc3a99b6ac3ae1eaf6a3fddcc70303ed56281896183a4cd98c18e5f0378bf18d6a09c685c6fefdd0c0914b4b22e183ac5c88d5674b54141ef8291855bc394296b8031c0b0b6ec26889871137b91224321bb0d2a89ae1cf84eeba9fe459d0b8dff7fb1aadbae839956dfdfef5b0a8dbdfe8fd2613228e75f45195ee24cfa58b85a57e0f
pandq = (n-phi_t)//2+2
print(pandq)
phi = n-pandq+1
d = inverse(e,phi)
print(d)
m = pow(c,d,n)
print(long_to_bytes(m))
misc
我們隊一題沒出,每題都差一點點 ,成功掉出前11 /哭
難啊~ 難啊~
1
給了一個包,直接丟進鯊魚(英文忘了 別問我 反正就是一條鯊魚)里面
在hint.php中找到提示 說需要兩個密碼,然后兩個密碼的的md5作為flag提交

看見兩個php偽協議讀取兩個檔案

/etc/shadow中得到第一個密碼 但是是加密的 用
pgs:$6$NXa3ixa0$MWZrFvwSm2VoRLIg5twVGZmJtWqX4PIcdxyC.4mWidRnYgy3HmZ1lejm63mnUG3YrcNZmzszdujiGRnmBRZFE1:18345:0:99999:7:::
用 John the Ripper 工具進行解密 ,我們沒有解出來 /哭
kali自帶 不用另行下載
據說解出來是
newcount
第二個在sql中
通過sql可以看見 創建了一個admin表,插入了一條資料

所以 第二個密碼是
AA00A
把兩個合起來md5一下就行了
2 flag.rar
這有個password的提示

查看 不可見字符 發現是莫斯加密

解出
THEPASSWORDOFTHESAFEIS???
做到這里我們就開始爆破4位密碼,爆破了5 6個小時沒一點動靜 / 難受
結果應該是還要加上前面 /哭了
3 一道雜項題
這題真的可惜 了,比賽中我都點進了那個介紹pyc隱寫的文章了,然后沒看,去做領另外兩道雜項了, 群里一說,我一百度,還是那篇文章 , 淦! /吐血
flag.pyc 反編譯后沒啥看的 就是一個base58的加密解密程式,給了一個密文,提示flag在pyc中
直接用工具stegosaurus解密
工具介紹
https://www.freebuf.com/sectool/129357.html
直接用那個命令使用有點問題 附上我在win10試出來的命令
python3 .\stegosaurus.py .\flag.pyc -x
賽后才出來 /氣

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/66136.html
標籤:其他
