<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/papers/1071

            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的。沒寫出來。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线