亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4360 | 回復: 0
打印 上一主題 下一主題

Sulley fuzzing ftp實例 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-22 08:53 |只看該作者 |倒序瀏覽

 SULLEY

 

 

       Sulley名字來起源于電影《Monsters》, 一頭毛絨絨的藍色怪物。下面將要看到的Sulley也是一個怪物,強大的基于Pythonfuzzing框架的怪物(在這里讓我們感謝他們:Pedram Amini Aaron Portnoy of TippingPoint)。Sulley不僅僅是一個fuzzer;它還有擁有優(yōu)秀的崩潰報告,自動虛擬化技術(shù)(VMWare automation)。在fuzzing的過程中你可以在任意時刻,甚至是目標程序崩潰的時候,從新啟動程序到前一刻,繼續(xù)尋找bug之旅。In short, Sulley is badass.

       SulleySPIKE(一款著名的協(xié)議 fuzzing工具,當然它是免費的)一樣使用了數(shù)據(jù)塊技術(shù),所以生成的數(shù)據(jù)會更有“智慧”,不在是一群沒頭沒腦的蒼蠅。讓我們看看什么是基于塊的fuzzing技術(shù),在生成測試數(shù)據(jù)前,你必須針對協(xié)議或者是文件格式,完成一個數(shù)據(jù)生成的框架,框架里盡可能詳細的包含了協(xié)議(或者文件格式)的各個字段,數(shù)據(jù)類型,還有長度信息,最后生成的測試數(shù)據(jù)就會非常有針對性。讓后把這些測試數(shù)據(jù)傳遞給負責協(xié)議測試的框架,用于fuzzing。這項技術(shù)最早提出來的目的就是為了解決網(wǎng)絡協(xié)議fuzz時的盲目性。舉個例子,在網(wǎng)絡協(xié)議中,一般每個字段都有長度記錄,如果我們發(fā)送的測試數(shù)據(jù)增加了數(shù)據(jù)的長度,卻沒有改變長度記錄,那服務端程序,就會根據(jù)長度記錄,自動拋棄多余的數(shù)據(jù),這樣在fuzzing的時候,就很難找出bug了;趬K的技術(shù)則是負責處理這些數(shù)據(jù)塊間的關系的,讓生成的數(shù)據(jù)更標準,而不是像野蠻人。

       接下來我們會詳細的講解Sully,從安裝到使用。先是快速的了解Sulley創(chuàng)建protocol description(協(xié)議描述)的基礎知識。接著再完成一個包含,fuzzing框架,包捕獲,以及崩潰報告的完整的fuzzer。我們fuzzing的目標就是WarFTPD,早期的版本存在棧溢出。測試fuzzer最常見方法就是,用有漏洞的程序喂它,如果它能咬出一個洞,說明你的fuzzer還不傻,如果什么都沒發(fā)現(xiàn),那洗洗回去睡把。這次我們喂的是個怪物,如果你還沒有飼養(yǎng)手冊,可以看看PedramAaron寫的Sulley manual。好了,讓我們繼續(xù)。

      

      

 

9.1           安裝Sulley

 

       在我們深入探索Sulley之前,先得找一頭,栓起來。大家可以從http://www.nostarch.com/ghpython.htm下載zip打包的Sulley源代碼。(我估計是眼花,愣是沒找到,http://sulley.googlecode.com此地有貨)。

       下載完成后,解壓Sulley,在目錄下找到sulleyutilsrequests

文件夾,然后復制到C:\Python25\Lib\site-packages\目錄下。這些就是Sulley的核心。接下來安裝其他依賴的文件。

       第一個WinPcap,一款開源的輕便簡潔的網(wǎng)絡庫,用于windows平臺下的包捕捉。有搞過嗅探的同學,對這東西應該是非常熟悉了,建議搞滲透的都去看看它的手冊,大餅級別的黑客利器。Winpcap被廣泛的應用與各種網(wǎng)絡工具,入侵檢測系統(tǒng)。Sulley使用它捕捉網(wǎng)絡數(shù)據(jù)。下載地址:http://www.winpcap.org/install/bin/WinPcap_4_0_2.exe。

       接下來安裝兩個python庫:pcapy impacket,,和上面的WinPcap庫配合。它們都由CORE Security提供。PcapyWinPcapPython接口,impacket則負責包的解碼和創(chuàng)建。pcap的下載地址http://oss.coresecurity.com/repo/pcapy-0.10.5.win32-py2.5.exe.

       mpacket的下載地址http://oss.coresecurity.com/repo/Impacket-stable.zip。下載完后解壓到 C:\ directory,進入目錄執(zhí)行以下命令:

C:\Impacket-stable\Impacket-0.9.6.0>C:\Python25\python.exe setup.py install

      

       一切就緒,主角登場!

 

 

9.2          Sulley primitives

 

       在我們開始開始對目標動手前,必須先定義好所有的building blocks(構(gòu)建塊),這些塊負責產(chǎn)生協(xié)議相關的測試數(shù)據(jù)。Sulley 提供了所需的各種的數(shù)據(jù)格式,為我們創(chuàng)建簡單高效的protocol descriptions提供了便利。這些單獨的數(shù)據(jù)組件叫做primitives(原語)。我們先簡短講解一些fuzz WarFTPD 時候會用到的primitives。一旦你理解了如何使用其中一個primitives,那剩下的就很容易了。

 

9.2.1        Strings

      

       字符串(Strings)是使用最多的primitives。到處都有字符串;用戶名,ip地址,目錄等等。s_string()指令表示添加進測試數(shù)據(jù)的primitives是一個可fuzz的字符串。s_string()只有一個參數(shù),就是有效的字符串,用于協(xié)議交互中的正常輸入。比如,你fuzzing一個email地址:

 

s_string("justin@immunityinc.com")

      

       Sulley會把justin@immunityinc.com當作一個有效值,然后進行各種變形,最后扔給目標程序。讓我們看看email地址變成了什么樣。

      

justin@immunityinc.comAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

justin@%n%n%n%n%n%n.com

%d%d%d@immunityinc.comAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

 

9.2.2 Delimiters

      

       Delimiters(定界符),用于將大的字符串分割成曉得容易管理的片段。還是用先前的email地址做例子,用 s_delim()指令能夠?qū)⑺指畛筛嗟?/SPAN>fuzz字符串。

 

s_string("justin")

s_delim("@")

s_string("immunityinc")

s_delim(".",fuzzable=False)

s_string("com")

 

       通過s_delim(),我們將email地址分成了幾個子串,并且告訴Sulley,我們在fuzzing的時候不使用點(.),但是會使用@

      

 

 

9.2.3        Static and Random Primitives

 

       s_static()s_random(),顧名思義,第一個使傳入的數(shù)據(jù)不改變,第二個使數(shù)據(jù)隨機的改變。

 

s_static("Hello,world!")

s_static("\x41\x41\x41")

 

       s_random()可以隨機產(chǎn)生變長的數(shù)據(jù)。

      

s_random("Justin",min_length=6, max_length=256, num_mutations=10)

      

       min_lengthmax_length告訴Sully變形后的數(shù)據(jù)的長度范圍,num_mutations為可選參數(shù),表示變形的次數(shù),默認為25次。

       在我們的例子,使用"Justin"作為源數(shù)據(jù),經(jīng)過10次變形,產(chǎn)生6-256個長度的字符。

      

9.2.4        Binary Data

 

       Binary Data(二進制數(shù)據(jù))是數(shù)據(jù)表示中的瑞士軍刀。Sullyey幾乎能處理所有二進制數(shù)據(jù)。當我們在處理一些未知協(xié)議的數(shù)據(jù)包的時候,你也許只是想看看服務器是如何回應我們生成的這些沒有意義

的數(shù)據(jù)的,這時候 s_binary() 就非常有用了

 

s_binary("0x00 \\x41\\x42\\x43 0d 0a 0d 0a")

 

       Sully能識別出所有這類的數(shù)據(jù),然后像將它們當作字符串使用。

 

 

 

9.2.5 Integers

 

       Integers(整數(shù))的應用無處不在,從能看的見的明文數(shù)據(jù),到看不見的二進制協(xié)議,以及數(shù)據(jù)長度,各種結(jié)構(gòu),等等。

       9-1列出了Sulley支持的主要幾種整數(shù)類型。

      

1 byte  – s_byte(), s_char()

2 bytes – s_word(), s_short()

4 bytes – s_dword(), s_long(), s_int()

8 bytes – s_qword(), s_double()

 

Listing 9-1: Sulley支持的整數(shù)類型

      

       所有的整數(shù)表達式都有幾個重要的的選項。endian項表示整數(shù)將以什么樣的形式變現(xiàn)出來,是小端- (<) 還是 大端- (>)格式 l默認似乎小端。format項有兩個可選值,asciibinary;代表整數(shù)將被如何使用。舉個例子,如果你有一個用ASCII格式 表示是1,用binary表示就是\x31signed項說明整數(shù)是有符號的還是無符號的,這個選項只有在format指定為ascii后有效,默認似乎False。最后一個有趣的選項是full_range,啟用這個選項以后,Sulley就會在一個很廣的范圍內(nèi)枚舉可能的整數(shù)值。舉個例子,如果我們傳入的整數(shù)是一個無符號的整數(shù),把full_range設置成True,這時候Sulley就會很智能的測試邊界值(接近或者超過最大值,或者接近最小值),無符號的最大值是65535Sulley就會試著使用65534, 65535,  65536

去進行測試。full_range默認為False,因為可枚舉的時間可是很長的?纯聪旅娴睦印

 

s_word(0x1234, endian=">", fuzzable=False)

s_dword(0xDEADBEEF, format="ascii", signed=True)

 

       第一個例子,我們設置了一個2字節(jié)大小的值0x1234,并且將表示方式設置成大端,同時作為一個靜態(tài)值。第二個例子,我們設置了一個4字節(jié)(雙字)大小的值0xDEADBEEF,并且將它作為有符號的整數(shù),以ASCII形式表現(xiàn)。

 

 

9.2.6        Blocks and Groups

 

       Blocks()Groups()Sulley提供的強大的組織工具。Blocks將獨立的primitives組裝成一個的有序的塊。Groups 中包含了一些特定的primitives,一個Group和一個Block結(jié)合后,每次fuzzer調(diào)用Block的時候,都會將Group中的數(shù)據(jù)循環(huán)的取出,組成不同的Block

       下面就是一個使用塊和組 fuzzing HTTP的例子。

 

# import all of Sulley's functionality.

from sulley import *

# this request is for fuzzing: {GET,HEAD,POST,TRACE} /index.html HTTP/1.1

# define a new block named "HTTP BASIC".

s_initialize("HTTP BASIC")

# define a group primitive listing the various HTTP verbs we wish to fuzz.

s_group("verbs", values=["GET", "HEAD", "POST", "TRACE"])

# define a new block named "body" and associate with the above group.

if s_block_start("body", group="verbs"):

# break the remainder of the HTTP request into individual primitives.

    s_delim(" ")

    s_delim("/")

    s_string("index.html")

    s_delim(" ")

    s_string("HTTP")

    s_delim("/")

    s_string("1")

    s_delim(".")

    s_string("1")

    # end the request with the mandatory static sequence.

    s_static("\r\n\r\n")

# close the open block, the name argument is optional here.

s_block_end("body")

 

       程序一開始我們就定義了一個叫 verbs的組,其中包含了所有HTTP請求類型。之后定義了一個叫body的塊,并且和verbs組綁定。這意味著,以后Sulley每次調(diào)用body內(nèi)的變形數(shù)據(jù)的時候,都會循環(huán)的獲取(GET, HEAD, POST, TRACE)5種請求方式,這樣一來,一次body內(nèi)的變形就相當于產(chǎn)生5個不同的body。

       到目前為止,我們已經(jīng)講解完了Sulley的基礎知識。當然Sulley不僅僅如此,還有數(shù)據(jù)解碼,校驗和計算,長度自動處理等等。想深入學習的同學可以看Pedram寫的Fuzzing: Brute Force Vulnerability Discovery (Addison-Wesley, 2007),一本綜合了Sulleyfuzzing相關技術(shù)的好書。現(xiàn)在該開始對WarFTPD下手了。我們要先創(chuàng)建自己的primitive集合,然后將它們傳給負責構(gòu)建測試的框架內(nèi)。

 

 

 

9.3 獵殺 WarFTPD

 

       在我們已經(jīng)學會了如何使用Sulley primitives創(chuàng)建protocol description(協(xié)議說明)之后,F(xiàn)在可以拿個東西試試手了。這次的目標就是WarFTPD 1.65。問題出在USERPASS命令身上,向他們傳遞過長的數(shù)據(jù),就會引發(fā)棧溢出。這種漏洞很典型,出現(xiàn)問題的地方結(jié)構(gòu)也很清晰,作為入手的case再好不過。先從ftp://ftp.jgaa.com/pub/products/Windows/WarFtpDaemon/1.6_Series/ward165.exe下載程序。在當前目錄解壓子之后,直接運行warftpd.exe就能啟動FTP服務了。在使用Sulley書寫協(xié)議說明之前,讓我們先了解下FTP協(xié)議的工作流程。

 

9.3.1        FTP   101

 

       FTP是一個簡單輕便的文件傳輸協(xié)議,被廣泛的使用于各種環(huán)境中,從Web服務器到網(wǎng)絡打印機。FTP服務器默認在端口21上監(jiān)聽客戶端發(fā)送的命令,F(xiàn)在我們要冒充成FTP客戶端,向服務器發(fā)送變形過的命令數(shù)據(jù),嘗試獲得服務器的權(quán)限。如果你順利完成了WarFTPDfuzzer, 別忘了用它去尋找新的倒霉蛋。

       一個FTP服務器既可以設置成不需要密碼的匿名訪問或者是需要密碼的認證訪問。因為WarFTPD的漏洞出在USERPASS命令上,所以我們就假定服務區(qū)使用認證訪問。FTP認證命令的格式如下:

 

USER <USERNAME>

PASS <PASSWORD>

 

       一旦客戶端傳入了有效的用戶名和密碼后,服務器就會賦予客戶端,傳輸文件,改變目錄,查詢文件等各種權(quán)限。當然USERPASS命令只是FTP服務器提供的功能中的一個子集,在認證成功后還有很多別的功能,如表9-2。這些新的命令都要加入到我們程序的協(xié)議框架(protocol skeleton)中。FTP協(xié)議詳細的命令,請看rfc959。

 

CWD  <DIRECTORY>   - change working directory to DIRECTORY

DELE <FILENAME>    - delete a remote file FILENAME

MDTM <FILENAME>    - return last modified time for file FILENAME

MKD  <DIRECTORY>   - create directory DIRECTORY

 

Listing   9-2:我們要額外fuzzFTP命令

      

       命令列表雖然不夠詳細,但還擴大了測試的范圍,現(xiàn)在讓我們動手把它們寫成protocol description

 

 

9.3.2        創(chuàng)建FTP協(xié)議框架

      

       學以致用,學以致用。

 

#ftp.py

from sulley import *

s_initialize("user")

s_static("USER")

s_delim(" ")

s_string("justin")

s_static("\r\n")

s_initialize("pass")

s_static("PASS")

s_delim(" ")

s_string("justin")

s_static("\r\n")

s_initialize("cwd")

s_static("CWD")

s_delim(" ")

s_string("c: ")

s_static("\r\n")

s_initialize("dele")

s_static("DELE")

s_delim(" ")

s_string("c:\\test.txt")

s_static("\r\n")

s_initialize("mdtm")

s_static("MDTM")

s_delim(" ")

s_string("C:\\boot.ini")

s_static("\r\n")

s_initialize("mkd")

s_static("MKD")

s_delim(" ")

s_string("C:\\TESTDIR")

s_static("\r\n")

      

       protocol skeleton完成之后,讓我們開始創(chuàng)建Sulley會話,把所有的請求信息連起來,同時啟動網(wǎng)絡嗅探和客戶端調(diào)試。

      

 

 

9.3.3        Sulley會話

      

       Sulley會話包含了請求數(shù)據(jù)整合,網(wǎng)絡數(shù)據(jù)包的捕捉,進程調(diào)試,崩潰報告,和虛擬機控制。先讓我們定義一個會話文件,然后詳細的分析每個部分。

 

#ftp_session.py

from sulley import *

from requests import ftp # this is our ftp.py file

def receive_ftp_banner(sock):

    sock.recv(1024)

sess = sessions.session(session_filename="audits/warftpd.session")

target = sessions.target("192.168.244.133", 21)

target.netmon  = pedrpc.client("192.168.244.133", 26001)

target.procmon = pedrpc.client("192.168.244.133", 26002)

target.procmon_options = { "proc_name" : "war-ftpd.exe" }

# Here we tie in the receive_ftp_banner function which receives

# a socket.socket() object from Sulley as its only parameter

sess.pre_send = receive_ftp_banner

sess.add_target(target)

sess.connect(s_get("user"))

sess.connect(s_get("user"), s_get("pass"))

sess.connect(s_get("pass"), s_get("cwd")) 

sess.connect(s_get("pass"), s_get("dele"))

sess.connect(s_get("pass"), s_get("mdtm"))

sess.connect(s_get("pass"), s_get("mkd"))

sess.fuzz()

       receive_ftp_banner()是必須的,因為每個FTP服務器在客戶端連接上的時候,都會發(fā)送banner(標識)。我們將它和sess.pre_send 綁定起來,這樣Sulley發(fā)送fuzzing數(shù)據(jù)前的時候就會先接收FTP banner。和receive_ftp_banner一樣,pre_send也只接收一個由Sulley傳遞的sock對象。第一步我們創(chuàng)建一個會話文件,用于記錄當前fuzzer的狀態(tài),同時控制fuzzing的啟動和停止。第二部定義攻擊的目標,包括IP地址和端口號。這里設置成 192.168.244.133端口21(這是我們運行WarFTPD虛擬機的IP)。第三步,設置網(wǎng)絡嗅探的端口為26001,IP地址和FTP服務器的地址一樣,這個端口用于接受Sulley發(fā)出的命令。第四步,設置調(diào)試器監(jiān)聽的端口26002,這個端口用于接收Sulley發(fā)出的調(diào)試命令。procmon_options選項告訴調(diào)試器我們關注的進程是war-ftpd.exe。第六步,在會話中加入定義好的目標對象。第七步,將FTP請求指令有序的組織好。先是認證,然后將操作指令和需要的密碼成對傳入。最后啟動Sulley開始fuzzing。

       現(xiàn)在我們定義好了會話,組織好了請求指令。只剩下網(wǎng)絡和監(jiān)控腳本的設置了。當這一切都完成的時候,就可以去捕捉我們的獵物了。

 

 

 

9.3.4        網(wǎng)絡和進程監(jiān)控

 

       Sulley的優(yōu)點之一就是能非常好的跟蹤fuzz期間的數(shù)據(jù)交互,以及目標系統(tǒng)的崩潰信息。這樣我們就能在第一時間內(nèi)分析出引起目標崩潰的數(shù)據(jù)包,然后快速的開發(fā)出exploit。

       Sulley的主目錄下可以找到 process_monitor.pynetwork_monitor.py兩個腳本,他們分別負責網(wǎng)絡監(jiān)控和進程監(jiān)控。

      

python process_monitor.py

Output:

ERR> USAGE: process_monitor.py

    <-c|--crash_bin FILENAME> filename to serialize crash bin class to

    [-p|--proc_name NAME]     process name to search for and attach to

    [-i|--ignore_pid PID]     ignore this PID when searching for the

                              target process

    [-l|--log_level LEVEL]    log level (default 1), increase for more

                              verbosity

    [--port PORT]             TCP port to bind this agent to

 

       如下啟動進程監(jiān)控。

      

python process_monitor.py -c C:\warftpd.crash -p war-ftpd.exe

 

提示:我們已經(jīng)設置了默認的監(jiān)聽端口26002,所以不用-p選項。

 

       接下來看看network_monitor.py。在這之前需要安裝以下的庫:WinPcap 4.0,  pcapy, mpacket。

 

python network_monitor.py

Output:

ERR> USAGE: network_monitor.py

    <-d|--device DEVICE #>    device to sniff on (see list below)

    [-f|--filter PCAP FILTER] BPF filter string

    [-P|--log_path PATH]      log directory to store pcaps to

    [-l|--log_level LEVEL]    log level (default 1), increase for more verbosity

    [--port PORT]             TCP port to bind this agent to

Network Device List:

    [0] \Device\NPF_GenericDialupAdapter

  [1] {83071A13-14A7-468C-B27E-24D47CB8E9A4}  192.168.244.133

 

       在這里我們需要使用第一個網(wǎng)絡接口。如下啟動網(wǎng)絡監(jiān)控。

      

python network_monitor.py -d 1 -f "src or dst port 21" -P C:\pcaps\

 

提示:在啟動之前必須先建立C:\pcaps目錄。

 

       一切就緒,開始獵食。

      

 

 

9.3.5        fuzzingWeb界面

 

       現(xiàn)在我們啟動Sulley,并使用內(nèi)置的Web界面觀察整個fuzz過程。

 

python ftp_session.py

 

       輸出如下:

 

[07:42.47] current fuzz path:  -> user

[07:42.47] fuzzed 0 of 6726 total cases

[07:42.47] fuzzing 1 of 1121

[07:42.47] xmitting: [1.1]

[07:42.49] fuzzing 2 of 1121

[07:42.49] xmitting: [1.2]

[07:42.50] fuzzing 3 of 1121

[07:42.50] xmitting: [1.3]

 

       如果輸出是這樣的,說明一切正常。Sulley正在繁忙的工作著,F(xiàn)在讓我們看看web界面,它會提供更多信息。

       用瀏覽器打開http://127.0.0.1:26000,將看到類似圖9-1的結(jié)果。

      

Figure 9-1: Sulleyweb界面

 

       不斷的刷新瀏覽器就能看到當前fuzzing的進程,以及正在使用的primitive。如圖9-1你會看到正在fuzzing primitiveuser,這個命令存在漏洞,在不久之后就會看到如圖9-2的崩潰報告。

 

 

Figure 9-2: Sulley web 界面顯示的崩潰信息

 

       很好,應該說非常好!我們已經(jīng)成功的CrashWarFTPDSulley也捕捉到了所有相關的信息。我們看到兩個測試用例的錯誤信息都是不能反匯編0x5c5c5c5c這個地址。0x5c就是ASCII字符\,這是由于傳入的\字符過多,覆蓋了別的內(nèi)存區(qū)域,緊接這影響到EIP。當調(diào)試器嘗試反匯編EIP指向的位置的時候,就會失敗,因為0x5c5c5c5c 不是一個有效的地址。這意味我們已經(jīng)能夠控制EIP了,那接下來就是開發(fā)exploit了!激動嗎?呵呵,可惜這是我們之前就知道的漏洞。不過有了這次成功的測試,我們對Sulley的工作方式已經(jīng)很熟悉了,對于別的fuzzing對象也只要依葫蘆畫瓢就行了。Good Luck!

       現(xiàn)在點擊test case的數(shù)字,就會看到詳細的崩潰信息。如表9-3

       PyDbg崩潰信息格式在60頁的"訪問違例處理程序"中有詳細的講解。忘記的返回去看看。

      

 [INVALID]:5c5c5c5c Unable to disassemble at 5c5c5c5c from thread 252

caused access violation

 when attempting to read from 0x5c5c5c5c

CONTEXT DUMP

  EIP: 5c5c5c5c Unable to disassemble at 5c5c5c5c

  EAX: 00000001 (         1) -> N/A

  EBX: 5f4a9358 (1598722904) -> N/A

  ECX: 00000001 (         1) -> N/A

  EDX: 00000000 (         0) -> N/A

  EDI: 00000111 (       273) -> N/A

  ESI: 008a64f0 (   9069808) -> PC (heap)

  EBP: 00a6fb9c (  10943388) -> BXJ_\'CD@U=@_@N=@_@NsA_@N0GrA_@N*A_0_C@

Ct^J_@_0_C@N (stack)

  ESP: 00a6fb44 (  10943300) -> ,,,,,,,,,,,,,,,,,,  cntr User from

                                192.168.244.128 logged out (stack)

  +00: 5c5c5c5c ( 741092396) -> N/A

  +04: 5c5c5c5c ( 741092396) -> N/A

  +08: 5c5c5c5c ( 741092396) -> N/A

  +0c: 5c5c5c5c ( 741092396) -> N/A

  +10: 20205c5c ( 538979372) -> N/A

  +14: 72746e63 (1920233059) -> N/A

disasm around:

0x5c5c5c5c Unable to disassemble

stack unwind:

war-ftpd.exe:0042e6fa

MFC42.DLL:5f403d0e

MFC42.DLL:5f417247

MFC42.DLL:5f412adb

MFC42.DLL:5f401bfd

MFC42.DLL:5f401b1c

MFC42.DLL:5f401a96

MFC42.DLL:5f401a20

MFC42.DLL:5f4019ca

USER32.dll:77d48709

USER32.dll:77d487eb

USER32.dll:77d489a5

USER32.dll:77d4bccc

MFC42.DLL:5f40116f

SEH unwind:

00a6fcf4 -> war-ftpd.exe:0042e38c mov eax,0x43e548

00a6fd84 -> MFC42.DLL:5f41ccfa mov eax,0x5f4be868

00a6fdcc -> MFC42.DLL:5f41cc85 mov eax,0x5f4be6c0

00a6fe5c -> MFC42.DLL:5f41cc4d mov eax,0x5f4be3d8

00a6febc -> USER32.dll:77d70494 push ebp

00a6ff74 -> USER32.dll:77d70494 push ebp

00a6ffa4 -> MFC42.DLL:5f424364 mov eax,0x5f4c23b0

00a6ffdc -> MSVCRT.dll:77c35c94 push ebp

ffffffff -> kernel32.dll:7c8399f3 push ebp

 

 

Listing   9-3:#437 測試用例 產(chǎn)生的崩潰信息

 

       Sulley的主要應用已經(jīng)講解完成了。當然這些只是其中的一部分,還有很多很多的東西,需要各位同學,自己去研究,比如崩潰數(shù)據(jù)的過濾,primitives的圖形化輸出,等等。從今以后,Sulley不再是一頭可怕的怪物,而是我們bug-hunging時的利器。在我們成功的完成了遠程服務的fuzz以后,接下來然我們fuzz本地的Windows下的驅(qū)動程序,這次我們用自己的工具。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP