BUUCTF-Reverse:xor(涉及异或脚本编写)
生活随笔
收集整理的這篇文章主要介紹了
BUUCTF-Reverse:xor(涉及异或脚本编写)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
xor一般指異或。異或,英文為exclusive OR,縮寫成xor異或(eor)是一個(gè)數(shù)學(xué)運(yùn)算符。
題目地址:https://buuoj.cn/challenges#xor
用IDA載入,尋找main函數(shù),F5打開偽C代碼:
用戶輸入一個(gè)長度為33的字符串,字符串中的字符分別和前一個(gè)字符異或(對應(yīng)得ASCII碼)后和變量global的前0x21個(gè)字符比對。邏輯并不復(fù)雜,提取global的值:
導(dǎo)出數(shù)據(jù)(edit——》export data)shift+E:
編寫腳本:
list1=[0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, 0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F, 0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F, 0x47, 0x32, 0x4F, 0x00] #print(list1) # 會自動(dòng)變成十進(jìn)制 flag=chr(list1[0]) # f 第一個(gè)‘f’沒有被處理,但是也是flag的一部分。 i=1 while True:if i<len(list1):flag += chr(list1[i]^list1[i-1]) //從輸入的第二位開始,將其與前一位異或i+=1else:break print(flag)
得到flag:flag{QianQiuWanDai_YiTongJiangHu}
千秋萬代_一統(tǒng)江湖 ㄟ( ▔, ▔ )ㄏ
總結(jié)
以上是生活随笔為你收集整理的BUUCTF-Reverse:xor(涉及异或脚本编写)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赢在微点答案专区英语_少儿英语课堂 语法
- 下一篇: js 导出excel_Laravel E