BCTF Writeup

我是狗汪汪 · 2014/03/14 17:53php

team:我是狗汪汪python

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

0x00 MISC


MISC100初來乍到

描述算法

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

解題mongodb

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

MISC200內網冒險

描述shell

爲了收集更多參加 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的。沒寫出來。

相關文章
相關標籤/搜索