1. 程式人生 > >速度爆破-shiyanbar的一個編程題

速度爆破-shiyanbar的一個編程題

name mic ges nbsp 實現 ffffff 腳本 低級語言 參數

(一)出處:

shiyanbar中的一個ctf練習題,題目大概意思是:網頁上給定一個sha1的hash值,這個hash值是1-100000中隨機的一個整數先通過‘md5‘hash一次,然後再通過’sha1‘hash一次。如果能在兩秒之內得到這個值,再輸入並提交則過關。題目鏈接:http://ctf5.shiyanbar.com/ppc/sd.php . 截圖下:

技術分享圖片


(二).分析:

既然是編程題,當然得編程來完成,思路也很簡單。筆者用的python。

1.要求要在兩秒鐘之內完成,相對來說,效率肯定要高:

python的效率在大多數情況相對低級語言來說要低很多,瓶頸所以要竟可能快的得到這個整數,如果先得到網頁給定的hash值然後在逐個整數循環計算比較,那就是在浪費這兩秒,為了避免時間的不足,這兩秒只完成三個任務:

1.獲取網頁上的hash值。

得到網頁上的sha1值,方法很多,beautifulsoup或者re或者xpath等等,re的底層是C實現的,所以效率相對較高,筆者用的是xpath,re是默認自帶的庫,其他兩個是三方庫裏的,需要提前安裝。

2.找出這個整數。

3.提交這個整數。

2.要存儲這些整數所對應的hash值:

筆者是使用列表來存儲的,查詢過程最多消耗100001次,現在絕大部分處理器都是足以勝任的。

3.最好偽裝成瀏覽器:

有些驗證可能會對瀏覽器代理有要求,養成這個習慣還是挺好的,有時可能會寫爬蟲。

4.post我們得到的值:

要post數據給服務器,首先要得到表單的參數,可以通過瀏覽器自帶的代碼檢查,或這firebug之類的插件,便可分析出來,筆者用的是wireshark,也可以用其他抓包軟件,如下圖:

技術分享圖片

(三).效果如下:

執行腳本後返回的結果裏面有通關所需的東西,終端編碼有點問題所以顯示的亂碼:

技術分享圖片


(四).貼上代碼:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import hashlib
import requests
from lxml import etree

#The list of saving hash value of these integer 
l = []

#The User-Agent of Browser
header = {"User-Agent":"Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0"}

#Target url
url = "http://ctf5.shiyanbar.com/ppc/sd.php"

#Caculate hash value and save it to list
for  i in range(1,100001):
	md5 = hashlib.md5()
	sha1 = hashlib.sha1()
	md5.update(str(i))
	sha1.update(md5.hexdigest())
	l.append(sha1.hexdigest())
	
#Get target page and obtain the sha1 value on this page
ss = requests.Session()
ctt = ss.get(url, headers = header).content
xml = etree.HTML(ctt)
sha = xml.xpath('//div[@name="sha1"]/text()')[0]

#Search the hash value and get index value on the list
for index ,value in enumerate(l):
	if sha == value:
		#post the integer that corresponding the sha1 value 
		data1 = {"inputNumber":index+1}
		result = ss.post(url,data = data1, params = header).content
		break
		
#Output return page's content
print(result)

(五).說明

這種方式用處還是挺大的,比如登錄驗證,或者暴力破解登陸驗證,或這自動化登陸等等。不過現在很多登陸頁面都加入了驗證碼機制或更高級的機制,稍微會麻煩寫,不過現在機器識別還是很強大的,可以用其作為輔助,從而完成更加艱難的任務。


(六).如有錯誤,還請斧正.

速度爆破-shiyanbar的一個編程題