題目下下來的附件有兩個,1個.py檔案,1個二進位制檔案,.py檔案內容如下:
from flag import flag
assert flag.startswith("flag")
# 作用:判斷字串是否以指定字元或子字串結尾},flag{},6個位元組
assert len(flag)==25
# flag的長度為25位元組,25-6=19個位元組
#3<<2可以這麼算,bin(3)=0b11向左移動2位變成1100,0b1100=12(十進位制)
def lfsr(r,mask):
output = (r << 1) & 0xffffff #將r向左移動1位,bin(0xffffff)='0b111111111111111111111111'=0xffffff的二進位制補碼
i=(r&mask)&0xffffff #按位與運算子&:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
lastbit=0
while i!=0:
lastbit^=(i&1) #按位異或運算子:當兩對應的二進位相異時,結果為1
i=i>>1
output^=lastbit
return (output,lastbit)
r=int(flag[5:-1],2)
mask = 0b1010011000100011100
f=open("key","ab") #以二進位制追加模式開啟
for i in range(12):
tmp=0
for j in range(8):
(r,out)=lfsr(r,mask)
tmp=(tmp << 1)^out #按位異或運算子:當兩對應的二進位相異時,結果為1
f.write(chr(tmp)) #chr() 用乙個範圍在 range(256)內的(就是0~255)整數作引數,返回乙個對應的字元。
f.close()
差不多就是根據flag計算出12個字元,依次寫入key檔案,這種題目一般就爆破和逆運算2種思路,這裡我們先讀取key檔案,看看是什麼內容
f = open('key','rb')
content = f.read()
s_list =
for c in content:
結果如下:
[85, 56, 247, 66, 193, 13, 178, 199, 237, 224, 36, 58]然後可以知道的是flag是19位二進位制數,範圍是0-2^20 - 1,所以寫指令碼來爆破,完整**如下:
def check(list1, list2):
for i in range(12):
if list1[i] != list2[i]:
return false
return true
def lfsr(r ,mask):
output = (r << 1) & 0xffffff #將r向左移動1位,bin(0xffffff)='0b111111111111111111111111'=0xffffff的二進位制補碼
i=(r&mask)&0xffffff #按位與運算子&:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
lastbit=0
while i!=0:
lastbit^=(i&1) #按位異或運算子:當兩對應的二進位相異時,結果為1
i=i>>1
output^=lastbit
return (output,lastbit)
if __name__ == '__main__':
f = open('key','rb')
content = f.read()
s_list =
for c in content:
print(s_list)
mask = 0b1010011000100011100
for i in range(1 << 19):
print(i)
tmp_list =
r = i
for j in range(12):
tmp = 0
for k in range(8):
(r, out) = lfsr(r, mask)
tmp = (tmp << 1) ^ out # 按位異或運算子:當兩對應的二進位相異時,結果為1
if (check(s_list, tmp_list)):
print(bin(i))
break
即可得到flag
1110101100001101011
注意加上flag{} 攻防世界密碼學streamgame2
看題目 題目給了乙個壓縮包,有乙個.py檔案和乙個key檔案。py from flag import flag assert flag.startswith flag assert len flag 27 deflfsr r,mask output r 1 0xffffff i r mask 0xf...
攻防世界 web confusion1
confusion1 考察 ssti 參考進入網頁,發現除了主頁面,login和register都登不進去。顯示apache2.4.10,查詢是否有相關可利用漏洞,失敗。根據wp,login.php和register.php下均有提示flag位置 一定要檢視原始碼,不能訪問的頁面也要檢視 在url上...
攻防世界mfw 攻防世界 Web mfw
題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...