python用於web題里寫解密腳本


題源自bugku里的WEB3

選擇選項讓他停止,F12后出現如下代碼,一看數字就知道是ASC:

復制出來,寫pyhton腳本如下,在編譯器里跑一下

s='KEY{J2sa42ahJK-HS11III&#125'
key=s.split(';')
#py里面所有的變量都是對象,所以用對象的表示形式s.split();
#split這個函數功能是在()內指出的位置添加斷點把這個字符串分開成為字符串的列表,那么key:{'&#75','&#69','&#89' balabala}
flag
=''
#提前聲明一個沒有長度的變量,后面往后接的時候才知道是在字符串類型后面接,用到‘+=’符號的變量都要提前聲明變量類型
for i in key: flag+=chr(int(i[2:]))
#for這句 ”for 臨時變量 in 可迭代對象:“ 別忘了加: if和else后面都要加: while后面也要加
#i[2:]是字符串的切片操作,其實含三個變量 i[a:b:c] 其中a是開始的下標(從0開始) b是結束的下標 c是步長(隔幾取一個)
#其中a,b如果空白就是默認開始和結束,c不寫默認為1就是每個都要 #這里就是截取了所有列表中各元素中的數字,然后把這些字符串里的數字轉化成int型的數字,int型數字可以作為asc改變為char型,但要注意函數是chr()而不是char()
print(flag)
#要加括號

第二種腳本:

strs="KEY{J2sa42ahJK-HS11III}"

strs=strs.replace("&#","")
strs=strs.replace(";"," ")
#1,去掉&#和;字符

strs=strs.strip()
#2,去掉頭尾多余的空格 不然最后的回車也會形成一個元素

chs = strs.split(" ")
#3,轉換為字符串數組 Python提供split()函數可以將一個字符串分裂成多個字符串組成的列表{'&#75','&#69','&#89'。。。}。

strr=""
for ch in chs:
    strr = strr + chr(int(ch)) 
#4,將ascii碼轉換為字符,上一種腳本寫法是把每個字符串的數字那部分切片拎出來了;這種是直接對字符進行遍歷操作了,因為剩下的都是數字字符。
#而py的for語句可以通過一個臨時變量來遍歷in后面的可迭代對象,很靈活,在這里就是遍歷了每一個字符
{'75','69',‘89'。。。} print(strr)

 

得到flag: KEY{J2sa42ahJK-HS11III}

 

關於python字符串的更多用法,這倆博客寫的很好: https://www.jianshu.com/p/093702933003  https://www.runoob.com/python/python-strings.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM