CTF 腳本編程 速度爆破

題目連接:http://ctf5.shiyanbar.com/ppc/sd.phpphp

對於python的怎麼post還有seesion我都是一無所知  -。。-html

 

簡單的歸結一下知識點:python

  1.利用Beautifulsoup獲取sha1部分session

  2.0-100000之間的整數進行md5和sha1加密post

  3.結果進行比對,而後post提交ui

 

1.首先看了一下session的概念以及python中若是運用的,這裏用到了requests模塊編碼

  seesion知識點博文鏈接:http://blog.csdn.net/u014649204/article/details/24119029    -。-大牛寫的不錯加密

  

1 url = 'http://ctf5.shiyanbar.com/ppc/sd.php'
2 status = requests.session()
3 html = status.get(url).text  #獲取網頁html

這個地方有個須要注意的地方,一開始對於seesion理解有誤解,我就調用了urllib2庫裏面的urlopen(url)url

這樣至關於直接和session沒有關係,結果仍是每次提交就至關於刷新了一次頁面,要保持剛纔的狀態就要利用獲取到的狀態status下進行get(url).text獲取當前的html spa

而後再進行篩選數據

 

2.Beautifulsoup獲取sha1部分的內容

 1 soup = BeautifulSoup(html ,"html.parser") 

以前看過一套Beautifulsoup的教學,形容的很形象,就是一鍋湯。而後獲取湯中的元素

看了一下整個頁面的源碼

print soup.div.string

 Beautifulsoup比較不錯的文章:http://cuiqingcai.com/1319.html

 

3.python實現post請求

  查了一下。。通常把須要提交的放到一個字典,中文須要url編碼

1 post_Content = {'inputNumber': i, 'submit': '%E6%8F%90%E4%BA%A4'}  #若是還有多個參數都構造,中文url編碼後的用
2 result = status.post(url, data=post_Content)

 

 

腳本源碼:

  

#coding=utf-8
from bs4 import BeautifulSoup
import requests
import hashlib

def get_Flag(content,url,status):

    for i in range(0,100001):
        hashmd5 = hashlib.md5(str(i)).hexdigest()
        hashsha1 = hashlib.sha1(hashmd5).hexdigest()
        if hashsha1 == content:
            i = int(i)
            post_Content = {'inputNumber': i, 'submit': '%E6%8F%90%E4%BA%A4'}  #若是還有多個參數都構造,中文url編碼後的用
            result = status.post(url, data=post_Content)
            print result.text
            break
            
url = 'http://ctf5.shiyanbar.com/ppc/sd.php'
status = requests.session()
html = status.get(url).text
soup = BeautifulSoup(html ,"html.parser")
get_Flag(soup.div.string,url,status)

 

get。。

CTF{BlAsT_FasT_Pr0gRamE}

 

仍是基礎太差,仍是屌絲一枚,繼續加油

相關文章
相關標籤/搜索