“百度杯”2017年春秋歡樂賽-----時間
阿新 • • 發佈:2019-01-29
=============================
個人收穫:
1.show_source(),file_get_contents(),mt_rand(),file_put_contents(),unlink()函式的意思
2.python的MD5加密寫法
=============================
題目:
解釋下原始碼的大概意思
show_source() :函式對檔案進行語法高亮顯示
取COOKIE裡面token的值 如果等於 hello,就執行下面的程式碼
file_get_contents() 函式把’flag.php‘檔案讀入到$txt變數中
mt_rand()是取隨機數的,與rand()區別是比rand()快4倍,而且如果mt_rand(1,10)的話1和10都會取得到的
通過md5對mt_rand取值的加密然後通過拼接'u/'和'.txt'得到檔案的名字存入到$filename中
file_put_contents() 函式把$txt存的內容寫入到$filename的檔案中取
然後休眠10秒
unlink() 函式刪除檔案
就說明我們訪問這個網站的時候,在網站目錄裡面會隨機生成一個檔案包含flag.php的內容,但是我們只有10秒的時間取訪問它,10秒過後會自動刪除。
所有我們來跑目錄,這裡我們需要把所有會出現的檔名的可能性都列出來當成字典來跑
python原始碼如下
import hashlib
import requests
file = open("data.txt",'w+')
for i in range(1,1001):
m = hashlib.md5()
m.update(str(i).encode())
mid = m.hexdigest()
url = 'u/'+mid+'.txt'
file.write(url+'\n')
file.close()
python 檔案各種許可權對照表
這裡的md5加密就是python正常的md5加密流程
md5加密: hash = hashlib.md5() hash.update('admin'.encode('utf-8')) print(hash.hexdigest()) 21232f297a57a5a743894a0e4a801fc3 sha1加密: hash = hashlib.sha1() hash.update('admin'.encode('utf-8')) print(hash.hexdigest()) d033e22ae348aeb5660fc2140aec35850c4da997
然後生成好的md5值(注意因為i是int型別的需要用str()來進行轉換型別)與'/u'和'.txt'拼接寫入檔案儲存
字典內容如下:
然後我們用御劍重新整理下網頁趕緊跑,並且開啟網頁,要不然10秒後就要刪除