百度杯2017年春秋欢乐赛_象棋

象棋

题目可以在i春秋的ctf训练营里找到

打开题目链接还真的给了一个象棋游戏,我一高兴还玩了两把......

进入正题,题目中并没有给出提示信息,审查元素看看,发现了一个好东西

看到这个正则表达式就知道接下来要写代码爆破文件名了,正好昨天刚学了多线程,今天正好拿来练习

import requests
import threading
import queue
from queue import Queue


def text():
    url = 'http://f290ba2e5a2748c4851a87161a5f123c202c0ff2dccd467a.game.ichunqiu.com/js/'
    strs = 'abcmlyx'
    num = '0123456789'
    for i in strs:
        for j in strs:
            for h in num:
                for l in num:
                    for n in num:
                       new_url = url+i+j+'ctf'+h+l+n+'.js'
                       q.put(new_url)
                       
                       
def requ():
    while not q.empty():
        u = q.get(True, 1)
        try:
            r = requests.get(u).text
            if '404' not in r:
                print(r)
            q.task_done()
        except:
            q.put(u)

if __name__=='__main__':
    q = Queue()
    text()
    for each in range(300):
        t = threading.Thread(target=requ)
        t.daemon = True
        t.start()
        
    q.join()
    

这里必须提一下,一开始没有在get()后面设置参数,会导致代码在跑了几秒后,i春秋就把你给ban了,所以这里必须设置请求的时间间隔

 

原文地址:https://www.cnblogs.com/Ragd0ll/p/8734154.html