BCTF Writeup

wyzsk發表於2020-08-19
作者: 我是狗汪汪 · 2014/03/14 17:53

team:我是狗汪汪

author:redrain,金龜子,ztz,hellove,cbuteng,琴心劍氣,saline

0x00 MISC


MISC100初來乍到

描述

米特尼克剛到中國人生地不熟,想要找到一些中國的駭客朋友幫助他,他知道Capture The Flag奪旗競賽是駭客雲集的地方,於是也報名參加了中國第一次全國性的CTF大賽 @BCTF百度杯網路安全技術對抗賽。而要進入BCTF圈交流,[email protected],才能找到一個密語。

解題

很簡單,微博上at了後會多個粉絲,檢視簡介即有flag。

MISC200內網冒險

描述

為了收集更多參加 BCTF 大賽的中國駭客朋友的資訊,米特尼克決定嘗試滲透進入 BCTF 的內網以獲取更多的資訊。透過資訊蒐集和網路監聽,他發現了進入內部資料庫的一個入口代理,並且在代理入口處拿到了少量流量資料。正當他想繼續收集更多信 息的時候,他的行跡被發現並被踢出了網路。 http://bctf.cn/files/downloads /misc200_23633b6b34ccf6f2769d35407f6b2665.pcap 入口代理:218.2.197.236:12345

解題

下載得到pcap,丟wireshark如圖

enter image description here

埠53 使用工具TCPDNS Tools將本機作為dns伺服器

enter image description here

ping目標域名或者使用nslookup -vc得到ip nc連線後輸入所得到ip獲得flag

enter image description here

MISC300 誘捕陷阱

描述

米特尼克從FBI探員凱瑟琳郵箱中發現了一位中國安全專家發給她的郵件,郵件內容如下: 我在THU高校部署了一些誘騙系統,捕獲到了與米特尼克網路攻擊行為相關的資料,見附件,我覺得你們有必要深入分析一下。當然如果你們沒有能力分析的話,可以聘用我做技術顧問,不過我的諮詢費用很高哦。 附件:http://bctf.cn/files/downloads/dionaea.bistream.38930db22ae8cc6a2e589672ca39dca9 米特尼克非常急迫地想知道這位中國安全專家到底發現了什麼?
提示
[hint0]: 也許蜜罐replay會幫助你:) [hint1]: 好吧,再提示另一段蜜罐log,只能說這麼多了. http://bctf.cn/files/downloads/kippo.ttylog.692ce16db7d940cb9ec52a8419800423 

解題

描述中附件得到一份dionaea的蜜罐log,但是未再win下搭建成功,後來給力hint是一份linux下的蜜罐系統kippo的log,成功搭建並重現攻擊過程

enter image description here

kippo中axel無法使用,下載只能透過curl,透過復現找到了後門地址2792326331/fool

enter image description here

解密後得到真實ip:166.111.132.187 將後門下載http://166.111.132.187/fool 接下來就交給妹子逆向這個後門了:) 這裡的這個跳轉不能讓它跳

enter image description here

下面是載入一些列舉程式和模組需要用到的函式

enter image description here

提權操作

enter image description here

挨個列舉程式,檢查有沒有百度防毒的程式。

enter image description here

這裡我們只需要將這幾個跳轉改了就好了。

enter image description here

過了那個百度防毒程式的驗證那兒。Key就自己跳出來了呢

enter image description here

0x01 PPC & Crypto


PPC & Crypto100 混沌密碼鎖

描述

據傳說,米特尼克進任何門都是不需要鑰匙的,無論是金鎖銀鎖 還是密碼鎖。使用偽造身份在BAT安全部門工作的時候,有一扇帶著密碼鎖的大門吸引了他的注意。門後面到底藏著什麼呢?米特尼克決定一探究竟。 http://bctf.cn/files/downloads/passcode_396331980c645d184ff793fdcbcb739b.py 218.2.197.242:9991 218.2.197.243:9991

解題

下載原始碼後閱讀

#!python
#-*- coding:utf-8 -*- 

import base64,binascii,zlib 
import os,random 

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] 

def abc(str): 
    return sha.new(str).hexdigest() 

def bin2dec(string_num): 
    return str(int(string_num, 2)) 

def hex2dec(string_num): 
    return str(int(string_num.upper(), 16)) 

def dec2bin(string_num): 
    num = int(string_num) 
    mid = [] 
    while True: 
        if num == 0: break 
        num,rem = divmod(num, 2) 
        mid.append(base[rem]) 
    return ''.join([str(x) for x in mid[::-1]]) 

def dec2hex(string_num): 
    num = int(string_num) 
    mid = [] 
    while True: 
        if num == 0: break 
        num,rem = divmod(num, 16) 
        mid.append(base[rem]) 

    return ''.join([str(x) for x in mid[::-1]]) 

def hex2bin(string_num): 
    return dec2bin(hex2dec(string_num.upper())) 

def bin2hex(string_num): 
    return dec2hex(bin2dec(string_num)) 

def reverse(string): 
    return string[::-1] 

def read_key(): 
    os.system('cat flag') 

def gb2312(string): 
    return string.decode('gb2312') 

answer='78864179732635837913920409948348078659913609452869425042153399132863903834522365250250429645163517228356622776978637910679538418927909881502654275707069810737850807610916192563069593664094605159740448670132065615956224727012954218390602806577537456281222826375' 

func_names = ['fun1', 'fun2', 'fun3', 'fun4', 'fun5', 'fun6', 'fun7', 'fun8', 'fun9'] 

f={} 

f['fun1']=reverse 
f['fun2']=base64.b64decode 
f['fun3']=zlib.decompress 
f['fun4']=dec2hex 
f['fun5']=binascii.unhexlify 
f['fun6']=gb2312 
f['fun7']=bin2dec 
f['fun8']=hex2bin 
f['fun9']=hex2dec 

def check_equal(a, b): 
    if a == b: 
        return True 
    try: 
        if int(a) == int(b): 
            return True 
    except: 
        return False 
    return False 

def main(): 

    print "Welcome to Secure Passcode System" 
    print "First, please choose function combination:" 

    in1=raw_input('f1: ') 
    f1='fun'+in1[:1] 
    in2=raw_input('f2: ') 
    f2='fun'+in2[:1] 
    in3=raw_input('f3: ') 
    f3='fun'+in3[:1] 
    in4=raw_input('f4: ') 
    f4='fun'+in4[:1] 

    if f1 not in func_names or f2 not in func_names or f3 not in func_names or f4 not in func_names: 
        print 'invalid function combination' 
        exit() 

    try: 
        answer_hash = f['fun6'](f['fun2'](f[f1](f[f2](f[f3](f[f4](answer)))))) 
    except: 
        print "Wrong function combination, you bad guy!" 
        exit() 

    if len(answer_hash) == 0: 
        print 'You must be doing some little dirty trick! Stop it!' 
        exit() 

    usercode = raw_input('Your passcode: ') 

    try: 
        user_hash = f['fun6'](f['fun2'](f[f1](f[f2](f[f3](f[f4](usercode)))))) 
        if user_hash == answer_hash: 
            if check_equal(answer, usercode): 
                print "This passcode has been locked, please use the new one\n" 
            else: 
                print "Welcome back! The door always open for you, your majesty! " 
                read_key() 
        else: 
            print "Sorry, bad passcode.\n" 
    except: 
        print "Sorry, bad passcode. Please try again." 

if __name__ == '__main__': 
    main() 

新增continue,跑了一下,結果是fun3,fun5,fun1,fun4 媽蛋,結果是This passcode has been locked, please use the new one 發現read_key(),使用python的 zlib.compress函式

#!python
usercode= hex2dec(reverse(binasci.b2a_hex(zlib.compress(f[f1](f[f2](f[f3](f[f4](usercode)))),4))))

enter image description here

PPC & Crypto200 他鄉遇故知

描述

逃離到中國的米特尼克與以前的老朋友都失去了聯絡,這讓他常 常懷念逝去的時光。在一次潛入某著名外企嘗試獲取重要資料的行動中,米特尼克還沒有拿到目標檔案就不幸被保安發現了。在逃離的過程中,他闖進了一個辦公 室,結果驚奇地發現自己二十年前的老朋友 Tupper 就在眼前。更神奇的是,Tupper 知道米特尼克需要什麼,給了他想要的東西並且幫助他成功脫逃。你知道米特尼克拿到的資訊是什麼嗎? http://bctf.cn/files/downloads/meeting-tupper_baaa58809f2a0435cb5f282ce4249fdf.txt

解題

二人對話應該是Tupper的自指公式中的k值,谷歌後瞭解到Tupper自指公式是用來繪製圖的 再wiki上找到了的程式跑不出後面兩段k值,後來又再csdn上找到了一段程式解決 使用程式如下:

#!python
def Tupper_self_referential_formula(fd, k):

    size = 61

    def f(x,y):
        d = ((-size * x) - (y % size))
        e = reduce(lambda x,y: x*y, [2 for x in range(-d)]) if d else 1
        f = ((y / size) / e)
        g = f % 2
        return 0.5 < g

    for y in range(k+size - 1, k-1, -1):
        line = ""
        for x in range(0, 1000):
            if f(x,y):
                line += "@"
            else:
                line += " "
        line += '\n'
        fd.write(line)


if __name__ == '__main__':
    d = k值
    e = k值
    f = open('ans2','w')

    Tupper_self_referential_formula(f,d)
    Tupper_self_referential_formula(f,e)
    f.close()
    '''
    row = 17
    print len(str(a))
    ans = str(bin(a))[2:]
    print len(ans)
    col = len(ans) / row + 1
    print col
    f =open('ans1','w')
    for i in range(0,row - 1):
        f.write(ans[col * i: col * (i+1)])
        f.write('\n')

    f.close()
    '''
    '''
    row = 61
    print len(str(d))
    ans = str(bin(d))[2:]
    print len(ans)
    col = len(ans) / row + 1
    print col
    ##f =open('ans1','w')
    for i in range(0,col):
        f.write(ans[row * i: row * (i+1)])
        f.write(ans[row * i + row: row * (i+2)])
        f.write('\n')

    f.close()
    '''

enter image description here

使用註釋的程式碼速度會更快

enter image description here

解出flag: p1e4se-d0nt-g1ve-up-cur1ng 。。。不要放棄治療麼。。。我已經病入膏肓了

PPC & Crypto400 地鐵難擠

描述

米特尼克需要用社工辦法拿到THU安全專 家的磁碟映象以瞭解更多資訊,於是他收買了THU專家的博士生,來到BJ市需要與博士生當面聯絡。但是,來到BJ市之後遇到的第一個問題就是交通。BJ市 人滿為患,上下地鐵時人們也不先下後上,而是互相擠。左邊的人想擠到右邊下車,右邊的人也想擠到左邊上車。你作為米特尼克在BJ的一位小夥伴,能否幫他和 所有乘客設計一個儘量少移動次數的方案,使得需要上車的人都上車,需要下車的人都下車。 218.2.197.242:6000 or 218.2.197.243:6000

解題

nc 連上去,需要爆破 4 位給定的 sha1, 每次進入系統的需要爆破的內容不同,有時間限制。 直接 4 個 for 迴圈,時間複製度為 O(62^4) python 無法在規定時間內完成。 採用分散式爆破或者多程式 接著 讓所有的 L 移動到右邊,所有的移動到左邊,中間是空格 4 種情況 空格跟左邊相鄰的位置交換 空格跟左邊隔著的一個位置交換位置 空格跟右邊相鄰的位置交換, 空格跟右邊隔著的一個位置交換。 然後要求用最小的步數,採用 bfs。 然後執行跑 100 輪出現 flag

enter image description here

0x02 REVERSE


REVERSE100 最難得題目

描述

米特尼克路被各路大神追查痛苦飢渴難耐。順手撿起身邊一個水杯,開啟瓶蓋,居然寫著one more,實在太神奇了。 http://bctf.cn/files/downloads/re_100.8cd4820cbd1300bda951e694298f73a0

解題

放入OD之後,發現有反除錯,要把這幾個反除錯的跳轉改了就好了。

enter image description here

enter image description here

enter image description here

然後把messagebox nop掉

enter image description here

然後執行,等他執行完畢,就可以看到key了。Th3_H4rd3st_H3r3

enter image description here

REVERSE200 小菜一碟

首先,下面是將這些數字從字元轉換成記憶體中的數字。

enter image description here

將這些數字初始化到記憶體中,如果遇到記憶體不是FF的那麼就跳想下一個記憶體地址。

enter image description here

初始化完畢之後就是這樣了:

enter image description here enter image description here

最重要的部分就是下面這個演算法: 下面這個演算法是求整數商,MagicNumber是0x66666667,一共移位了34位,帶入公式o=2^n/c C是MagicNumber,n是34,這樣就可以求得o為0xA,也就是10進位制的10,那麼下面就是用一個數來對10求商。

enter image description here

再下面也是一樣的。用上面求商那個式子的被除數來對0xA求餘。也就是求模。

enter image description here

並且要滿足下面的比較

enter image description here

上面的這部分演算法總結一下 過程就是

(bit6*bit7/10+bit7*1)%10==bit1
比較第二位和bit6*bit7%10的關係
比較bit6*bit7/10+bit7是不是大於等於10
由於第二次是8可以確定第6位一定是0.1.2中的一個
如果都成立第二位鑑於bit6*bit7%10

之後第二次迴圈開始,第7位的部分變成固定值8。再次滿足上述條件並滿足最後減處來的小於等於1 這裡就根據關係湊數字吧 湊了幾組199XX11,697XX25等,然後根據下面去確定

好下來下面這個1404這個地方,這裡call了一個00CF1000 此處這個call可以用黑盒的辦法處理。

enter image description here

上面這個[ebp-0x58] 確定是不是運算結果大於100,失敗 bx的值和之前輸入的值有關 bl位低位4數 這裡有點忘記了,動態調一下。 然後就很容易去定了第8位和第9位為09 大不了湊幾組就知道規律了比分析快多了。 下面這個迴圈就是在比較剩餘的那些數字了。不對的地方改一下就好了。

enter image description here

最後的結果是:6970825096996108

REVERSE400 神秘系統

首先在xp裡面將虛擬機器MBR覆蓋為神秘系統的MBR,然後用IDA+VM除錯。 在7C00斷下來:

enter image description here

下面是在計算aLoading___|的長度為

enter image description here

enter image description here

讀取螢幕上游標的當前位置

enter image description here

下面是顯示Loading這個字串。

enter image description here

下面使用int13中斷來讀取系統扇區 讀系統的第二個扇區開始讀A個扇區。

enter image description here

下圖是第二個扇區的一部分。確實不知道是什麼。。。先往後看吧。

enter image description here

將這些資料讀到0x8000處

enter image description here

下面是在螢幕上面輸出Access code:

enter image description here

繼續,這裡要求你輸入一個0-9的數字

enter image description here

下面是在解密剛剛從第二扇區讀入的資料

enter image description here

解密完畢之後,就會跳到8000去執行。如果我們這時候輸入的不對的話,那麼就會錯了。

enter image description here

這裡應該是和系統進入的時候一樣的,首先會在8000處有一個段跳轉指令,然後繼續執行

enter image description here

然後我們看看MBR開始的地方,看上去很相似啊。。

enter image description here

我們試一下吧。

0xDA ^ 0xEB = 31
0x3B ^ 0x08 = 33
0x71 ^ 0x42 = 33
0x74 ^ 0x47 = 37

我們再試試 1337,就進入系統了。

如果我們用記事本開啟這個檔案的話,可以看到:

enter image description here

下面使用了int16的0號功能,也就是從鍵盤上讀ASCII碼

enter image description here

enter image description here

下面這個地方就是解析我們輸入的字元。

enter image description here

輸入的大於2位的話,就會判斷是不是wr 如果是wr的話,就匹配引數

enter image description here

然後正式進入wr的處理函式 這裡產生隨機數

enter image description here

寫入檔案

enter image description here

下面是對檔名稱進行加密

enter image description here

enter image description here

儲存加密後的檔名字

enter image description here

根據這個存放檔名字的函式,我們可以知道,他將這個檔案按照一定的格式儲存在記憶體中的。

首先一個作業系統要有適當的格式來儲存檔案,如果一個檔案是按照這種格式來儲存的話,那麼系統中的所有檔案都是按照這種格式來儲存的,我們可以透過我們寫入的檔案來逆向出系統儲存檔案的方式。

後門再分析檔案儲存的加密演算法,然後我們在記憶體中搜尋符合格式要求的內容,那麼這一塊內容就是要找的檔案。然後我們再根據逆出來的加密演算法就可以解密檔案了。

最後解密出的檔案是 Dear CTFer, if you see this message, you have completely unerstood my OS. Congratulations! Here is what you want: BCTF{6e4636cd8bcfa93213c83f4b8314ef00}

0x03 PWN


PWN100後門程式

描述

米特尼克拿到了BAT資料中心的口令後,為了確保口令被更改後仍能登陸資料中心,他從一位小夥伴那拿到了一個後門程式植入進了伺服器。這個後門程式沒有任何說明,但是米特尼克迅速找到了使用方法。後門程式:http://bctf.cn/files/downloads/backdoor_844d899c6320ac74a471e3c0db5e902e 安裝地址:218.2.197.250:1337 安裝地址2:218.2.197.249:1337

解題

主要思路: 經過分析,發現程式的主要功能是將使用者輸入與<baidu-rocks,froM-china-with-love>輪番異或並判斷結果是否等於n0b4ckd00r。

enter image description here

如果這個判斷透過,就會把從第10個位元組的剩餘輸入資料作為函式呼叫。

enter image description here

因此要利用這個我們的shellcode要用n0b4ckd00r開頭並且用<baidu-rocks,froM-china-with-love>異或一遍然後傳送給伺服器。 需要注意的是要保證scanf能完整接受shellcode,它會把0x20等字元截斷造成shellcode無法執行。 shellcode用的是這個:http://www.shell-storm.org/shellcode/files/shellcode-857.php

PWN200身無分文

描述

米特尼克在BAT上班時,發現很多同事都在用新款Android手機,很是羨慕,他也想搞一部,來替換他那部用了“二十多年”的摩托羅拉手機。但是他在BAT公司還沒拿到第一筆工資,用假身份申請的信用卡在租房與日常飲食上也快刷爆了,可以說是身無分文了。這卻難不倒米特尼克,他發現了這個銷售手機的線上商店。商店地址:218.2.197.251:1234 http://bctf.cn/files/downloads/mobile_shop_4d904f700ef95bae39936cd9c0829d31

解題

主要思路:

下載程式後載入ida,找到顯示選單函式sub_8048b80。

enter image description here

透過這個函式的呼叫者我們找到接受引數的函式sub_8048C00,而該函式會呼叫購買手機的函式(sub_8048840)、顯示選單的函式等等,而sub_8048840中會對傳入的引數進行校驗:

enter image description here

檢查是否為‘-’開頭,如果不是,用strtol把字串引數轉換成數字,如果一次購買的商品大於8則退出,否則

enter image description here

a1[8 - result]加一,如果此處我們能控制讓傳入的引數為負數,那麼就可以在a1 + 8的任意地址+1了,此處可以更改sub_8048C00的返回地址。 因為函式會檢查傳入引數是否以‘-’開頭,所以傳入一個以空格開頭的字串‘ -1’,這樣就能繞過檢測並且在經過strtol函式後還能轉換為-1,至此,可以達到改a1 + 8之上任意地址了。 來看sub_8048A30函式,函式接受傳入的信用卡號存放在變數中,我們可以在此處存放shellcode,然後透過上面的地址操作更改地址為變數的地址就可以exploit了。

enter image description here

所以,透過這點就可以利用上面的任意地址修改,將返回地址修改為我們存放的shellcode的地址就可以達到exploit了。

0x04 WEB


Web100

進入題目後看到了幾個人的名字對應的連線,其中的引數格式是id={32位字串},id後面的數字目測都很像MD5,就去cmd5解了下,發現md5值都是 (對應的名字+三位數字)的md5值,那麼現在提示要求獲得Alice的的檔案,就嘗試去猜測一下Alice的id看看 交給burp,切換到burp的Intruder,然後把id出設定一個payload位置:

enter image description here

然後指定paylad為Alice+三位數字取md5運算:

enter image description here

然後就可以attack

enter image description here

最後可以看到結果為Alice479時候出現了正確的頁面,訪問一下,原始碼中看到了<!-- $_POST['key=OUR MOTTO'] -->的提示,圖片是BT5的圖片,就嘗試bt5的motto,各種大小寫,逗號,空格的嘗試之後,得到又一個提示config.php.bak 下載之後得到的東西在chrome console中得到了flag:

enter image description here

enter image description here

話說。。。主辦方你們敢不敢不要換程式碼了。。。今天覆現的時候發現flag和之前提交的不一樣。。。還好有以前的截圖,這倆flag我也忘記了哪個是第一天我們提交的了

Web200

訪問題目頁面提交提示只能在本地執行,然後F12 把ip的值改為了127.0.0.1提交,彈出了一個401登陸認證,admin/admin 就進去了,彈出來一個遊戲頁面,但是坑爹的怪物根本打不死啊有木有!!! 跑去看agnet1.js的程式碼,ctrl+f了下BCTF,找到了生成key的函式:

enter image description here

繼續ctrl+f看哪裡呼叫了,找到了呼叫的地方:

enter image description here

就看到進入之前的那個if判斷,根據變數名字猜到了deadghost=10就是打死十個怪物才會彈出key,開始找到了player的一個life屬性,發現是5,還有些攻擊間隔之類的變數,就直接改這些值,跑去傻逼呵呵的打死了10只怪物到了小黃門前面彈出了flag,但是坑爹的是一直就不對! 返回來仔細看程式碼原來life和移動速度也參加了生成key的運算,這些屬性不能改,看程式碼好心煩啊好蛋疼,從if那看到authnum的第二個引數是deafghost,就是打死的怪物數量,是定值10,繼續傻逼呵呵的跑去看authnum的第一個引數是怎麼算出來的,看的好亂,忽然就發現2b了,直接chrome的js console應該就ok,f12過去,輸入 authnum(gameObj.key,10) 出來了flag:

enter image description here

Web300

根據<form class="form-signin" action="test.php.bak">--> 中下載到的原始碼,根據裡面key和room長度的判斷以及那個正則,構造出了一個合適的url:query.php?key=abcd123AB124564&room=xxx room哪裡貌似可以執行, 當room=$(2*3))時輸入如下:

enter image description here

不過只能返回%d數字。。。。。 後面繼續嘗試其他各種猥瑣命令,redrain大牛說如果命令返回值有多行或者為空似乎都不會傳給room去執行,可以用ls 和萬用字元來判斷檔案是否存在,類似於盲注,透過返回頁面判斷這個檔案活目錄在不在。。.即 room=$(ls B) 如果頁面返回那串180xxx的隨機數,說麼這個檔案或目錄一個字元為B,繼續room=$(ls BX) 這樣去匹配,同時控制整個room長度小於15就ok了,然後手工帝就用黃金右手去跑了,逗比的跑去寫了個程式發現還沒人家的右手跑的快,呵呵呵了: 最後跑出來flag:

enter image description here

WEB400冰山一角

描述

在上一個站點中米特尼克學會了特殊的Web技巧,在開始滲透前,他會左顧右盼裝作看風景。他對BAT這個公司的好奇與日俱增,似乎BAT並不像是表面上看起來的那樣,僅僅是個網際網路公司。他追尋一系列蛛絲馬跡找到了這個站點,裡面似乎隱藏著BAT的一項核心機密。站點入口:http://218.2.197.240:1337/0cf813c68c3af2ea51f3e8e1b8ca1141/index.php(注意:本題flag非“BCTF{可見字串}”形式)

解題

訪問url是一個登入視窗:


enter image description here

在經過掃描後發現開放了mongodb埠,於是直接mongodb注入:

enter image description here

得到這個頁面:

enter image description here

透過提示得知存在you_guys_fxxking_smart.php/jpg兩個檔案,訪問php又是一個登入視窗。。

enter image description here

而jpg則是程式碼提示:

enter image description here

透過程式碼提示,可以看到關鍵語句的password經過了hash函式加密,而第三個引數true告訴我們加密後的密文是二進位制輸出的,所以構造一個經過加密後存在SQL隱碼攻擊的密文就可以。 金鑰可以透過提示:“I love the first letter of my name”以及“<meta name="author" content="bob"> ”得到為b,於是我寫了一個指令碼呼叫hash的所有支援函式並遍歷輸出尋找SQL隱碼攻擊語句,同時也沒閒著用burpsuite對登入視窗進行爆破(驗證碼複用)。 然後爆破成功,密碼9384。 得到這個:

enter image description here

猜測可能是hash中的某函式加密過了,於是把密碼取出來扔cmd5試,在試到sha512的時候成功了,最後兩個密碼解密還原得到flag。

Web500

存在一個支付的bug,取消交易可以無限刷rmb和btc 首先用rmb買入btc,然後交易管理中取消該交易,此時burp抓包,重放此包n次可刷n倍rmb 刷btc也是一樣,先買入一枚btc,然後搞價賣出,此時為掛單狀態,然後取消交易,此時抓包,重放此包n次可刷n倍btc 刷夠200btc就可以盲打到後臺,在rmb提現處可以xss,打到cookie進入後臺,發現一處蛋疼蛋疼的注入,在後臺返利處:

enter image description here

抓包獲得的id=’可以注入 Id=xxx’當id號有效時會出現http 500錯誤 雖然提交 id=xxx and 1=1 和 id=xxx and 1=2 之後返回頁面相同 但是提交and 1=1之後再提交 單引號就不會丟擲http 500錯誤 提交 and 1=2 之後 再提交單引號會報錯 所以可以用第二次請求加單引號去驗證上次請求的結果。

而且只要條件為真,id號就失效,選片換下一個id號

由此思路,可以寫程式去實現: 首先發包生成返利 Id=xxx +payload進行盲注 發id=xxx加單引號驗證上步結果 如果3中未出現http 500 則繼續更換下一個payload。若出現http 2000則 重新生成返利id

然後就迴圈2-5步驟貌似就能跑資料了。當然都是YY的。沒寫出來。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章