国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

利用格式化字符串漏洞對系統(tǒng)發(fā)起攻擊
2007-03-09   

什么是格式化字符串攻擊?

格式化字符串漏洞同其他許多安全漏洞一樣是由于程序員的懶惰造成的。當你正在閱讀本文的時候,也許有個程序員正在編寫代碼,他的任務是:打印輸出一個字符串或者把這個串拷貝到某緩沖區(qū)內(nèi)。他可以寫出如下的代碼:

printf("%s", str);

但是為了節(jié)約時間和提高效率,并在源碼中少輸入6個字節(jié),他會這樣寫:

printf(str);

為什么不呢?干嘛要和多余的printf參數(shù)打交道,干嘛要花時間分解那些愚蠢的格式?printf的第一個參數(shù)無論如何都會輸出的!程序員在不知不覺中打開了一個安全漏洞,可以讓攻擊者控制程序的執(zhí)行,這就是不能偷懶的原因所在。

為什么程序員寫的是錯誤的呢?他傳入了一個他想要逐字打印的字符串。實際上該字符串被printf函數(shù)解釋為一個格式化字符串(format string)。函數(shù)在其中尋找特殊的格式字符比如"%d"。如果碰到格式字符,一個變量的參數(shù)值就從堆棧中取出。很明顯,攻擊者至少可以通過打印出堆棧中的這些值來偷看程序的內(nèi)存。但是有些事情就不那么明顯了,這個簡單的錯誤允許向運行中程序的內(nèi)存里寫入任意值。

Printf中被忽略的東西

在說明如何為了自己的目的濫用printf之前,我們應該深入領(lǐng)會printf提供的特性。假定讀者以前用過printf函數(shù)并且知道普通的格式化特性,比如如何打印整型和字符串,如何指定最大和最小字符串寬度等。除了這些普通的特性之外,還有一些深奧和鮮為人知的特性。在這些特性當中,下面介紹的對我們比較有用:

* 在格式化字符串中任何位置都可以得到輸出字符的個數(shù)。當在格式化字符串中碰到"%n"的時候,在%n域之前輸出的字符個數(shù)會保存到下一個參數(shù)里。例如,為了獲取在兩個格式化的數(shù)字之間空間的偏量:

int pos, x = 235, y = 93; 
      printf("%d %n%d\n", x, &pos, y); 
      printf("The offset was %d\n", pos);

* %n格式返回應該被輸出的字符數(shù)目,而不是實際輸出的字符數(shù)目。當把一個字符串格式化輸出到一個定長緩沖區(qū)內(nèi)時,輸出字符串可能被截短。不考慮截短的影響,%n格式表示如果不被截短的偏量值(輸出字符數(shù)目)。為了說明這一點,下面的代碼會輸出100而不是20:

char buf[20]; 
      int pos, x = 0; 
      snprintf(buf, sizeof buf, "%.100d%n", x, &pos); 
      printf("position: %d\n", pos);

簡單的例子

除了討論抽象和復雜的理論,我們將會使用一個具體的例子來說明我們剛才討論的原理。下面這個簡單的程序能滿足這個要求:

/* 
     * fmtme.c 
     *       Format a value into a fixed-size buffer 
     */ 

    #include  

    int 
    main(int argc, char **argv) 
    { 
        char buf[100]; 
        int x; 
        if(argc != 2) 
            exit(1); 
        x = 1; 
        snprintf(buf, sizeof buf, argv[1]); 
        buf[sizeof buf - 1] = 0; 
        printf("buffer (%d): %s\n", strlen(buf), buf); 
        printf("x is %d/%#x (@ %p)\n", x, x, &x); 
        return 0; 
    }

對這個程序有幾點說明:第一,目的很簡單:將一個通過命令行傳遞值格式化輸出到一個定長的緩沖區(qū)里。并確保緩沖區(qū)的大小限制不被突破。在緩沖區(qū)格式化后,把它輸出。除了把參數(shù)格式化,還設置了一個整型值隨后輸出。這個變量是隨后我們攻擊的目標。現(xiàn)在值得我們注意的是這個值應該始終為1。

本文中所有的例子都是在x86 BSD/OS 4.1機器上完成。如果你到莫桑比克執(zhí)行任務超過20年時間可能會對x86不熟悉,這是一個little-endian機器。這決定在例子中多精度數(shù)字的表示方法。在這里使用的具體數(shù)值會因為系統(tǒng)的差異而不同,這些差異表現(xiàn)在不同體系結(jié)構(gòu)、操作系統(tǒng)、環(huán)境甚至是命令行長度。經(jīng)過簡單調(diào)整,這些例子可以在其他x86平臺上工作。通過努力也可以在其他體系結(jié)構(gòu)的平臺上工作。

用Format攻擊

現(xiàn)在是我們戴上黑帽子開始以攻擊者方式思考問題的時候了。我們現(xiàn)在手頭有一個測試程序。知道這個程序有一個漏洞并且了解程序員是在哪里犯錯誤的(直接把用戶輸入的命令行參數(shù)作為snprintf的格式化參數(shù))。我們還擁有關(guān)于printf函數(shù)深入的知識,知道如何運用這些知識。讓我們開始修補我們的程序吧。

從簡單的開始,我們通過簡單的參數(shù)調(diào)用程序。看這兒:

% ./fmtme "hello world" 
    buffer (11): hello world 
x is 1/0x1 (@ 0x804745c)

現(xiàn)在這兒還沒有什么特別的事情發(fā)生。程序把我們輸入的字符串格式化輸出到緩沖區(qū)里,然后打印出它的長度和數(shù)值。程序還告訴我們變量x的值是1(以十進制和十六進制分別顯示),x的存儲地址是0x804745c。接下來我們試著使用一些格式指令。在下面的例子中我們打印出在格式化字符串之上棧堆中的整型數(shù)值:

% ./fmtme "%x %x %x %x" 
    buffer (15): 1 f31 1031 3133 
    x is 1/0x1 (@ 0x804745c)

對這個程序的快速分析可以揭示在調(diào)用snprintf函數(shù)時程序堆棧的規(guī)劃:

Address  Contents       Description 
    fp+8     Buffer         pointer 4-byte address 
    fp+12    Buffer         length 4-byte integer 
    fp+16   &n


熱詞搜索:

上一篇:對你所編制的 Web 程序源代碼加以保護
下一篇:黑客案例——瀏覽器執(zhí)行exe文件的探討

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
一本色道久久综合亚洲91| 日韩视频一区二区在线观看| 欧美丝袜丝nylons| 精品入口麻豆88视频| 一区二区视频在线看| 国产精品中文欧美| 欧美日韩精品一区二区天天拍小说| 久久男人中文字幕资源站| 亚洲国产日韩一区二区| av电影一区二区| 亚洲精品在线观看视频| 午夜视频一区二区| 91国偷自产一区二区使用方法| 国产欧美精品一区二区色综合朱莉| 日韩影院免费视频| 欧美综合一区二区三区| 99riav久久精品riav| 在线区一区二视频| 久久综合色之久久综合| 亚洲成av人片在线观看无码| 91丨九色丨尤物| 欧美激情在线看| 狠狠色综合播放一区二区| 欧美色精品天天在线观看视频| 国产精品久久久久久久久久免费看| 极品少妇xxxx精品少妇| 欧美一区二区久久久| 婷婷国产v国产偷v亚洲高清| 欧洲人成人精品| 一区二区三区在线高清| 色天使久久综合网天天| 亚洲天堂网中文字| 成人性生交大片免费看中文| 国产欧美日韩三区| 成人综合在线网站| 国产精品久久二区二区| 国产精选一区二区三区| 欧美日韩精品一区二区| 亚洲资源中文字幕| 欧美日韩综合在线| 亚洲大片精品永久免费| 欧美剧情电影在线观看完整版免费励志电影 | 欧美大片在线观看一区| 毛片av一区二区| 久久综合狠狠综合久久综合88| 久久不见久久见免费视频7| 欧美一三区三区四区免费在线看 | 国产一区二区三区在线观看免费 | 欧美高清视频在线高清观看mv色露露十八 | 日本道精品一区二区三区| 亚洲精品中文在线影院| 欧洲av在线精品| 美女视频一区二区三区| 久久精品一区蜜桃臀影院| 国产a视频精品免费观看| 亚洲欧美综合色| 欧美视频一区二区| 久久99精品久久久久久动态图| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲成人av福利| 91精品国产综合久久福利| 国内精品不卡在线| 国产精品成人免费在线| 欧美日韩国产成人在线免费| 久久99久久久欧美国产| 中文字幕亚洲不卡| 欧美另类videos死尸| 国内精品写真在线观看| 亚洲摸摸操操av| 日韩视频在线永久播放| a4yy欧美一区二区三区| 日韩精品91亚洲二区在线观看| 亚洲精品在线观| 精品视频在线视频| 国产 欧美在线| 午夜伦欧美伦电影理论片| 国产亚洲1区2区3区| 欧美日韩一区二区三区免费看| 国产一区二区三区精品欧美日韩一区二区三区 | 99热在这里有精品免费| 日韩高清不卡一区二区三区| 中文字幕国产一区| 日韩一区二区在线看| 91麻豆高清视频| 国产精品一区久久久久| 亚洲综合视频在线| 国产精品妹子av| 精品国产乱码久久久久久夜甘婷婷| av色综合久久天堂av综合| 精品一区二区三区在线观看 | 在线观看日韩电影| 国产精品一区2区| 日韩电影一区二区三区| 一区二区三区在线看| 国产精品免费久久| 久久精品人人做人人综合| 欧美老年两性高潮| 色88888久久久久久影院野外| 粉嫩av一区二区三区在线播放 | 欧美大度的电影原声| 91福利小视频| 91丨porny丨最新| 成人国产精品免费观看视频| 紧缚奴在线一区二区三区| 视频一区在线播放| 亚洲一区二区三区视频在线播放| 国产精品每日更新在线播放网址| 久久久亚洲精品石原莉奈| 欧美一级二级在线观看| 91精品在线观看入口| 欧美日韩国产高清一区二区三区 | eeuss鲁片一区二区三区在线看| 另类小说色综合网站| 亚瑟在线精品视频| 午夜精品久久久久| 日韩精品电影在线| 美女一区二区三区在线观看| 免费在线观看一区| 国产一区二区三区免费| 国产大片一区二区| 成人深夜福利app| 91理论电影在线观看| 色综合咪咪久久| 欧美视频自拍偷拍| 91精品国产色综合久久| 日韩欧美在线综合网| 精品美女一区二区| 久久奇米777| 国产精品色一区二区三区| 亚洲欧洲国产专区| 亚洲第一av色| 美女视频网站黄色亚洲| 国产一区二区三区观看| 波多野结衣在线aⅴ中文字幕不卡| 不卡av在线免费观看| 欧美中文字幕不卡| 91精品福利在线一区二区三区| 26uuu亚洲综合色欧美| 国产精品久久久久久久久免费樱桃| 亚洲女性喷水在线观看一区| 亚洲国产成人av| 精品一二三四区| 色综合久久久久综合体| 91精品国产综合久久久蜜臀图片| 精品国产91乱码一区二区三区| 欧美激情一区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 日韩视频在线你懂得| 精品国产一区二区国模嫣然| 国产亚洲女人久久久久毛片| 亚洲男同性恋视频| 久久疯狂做爰流白浆xx| 五月综合激情日本mⅴ| 久久精品国产一区二区三 | 中文字幕第一页久久| 亚洲乱码精品一二三四区日韩在线 | 午夜精品久久一牛影视| 激情都市一区二区| 色狠狠色狠狠综合| 精品久久五月天| 亚洲激情校园春色| 久久97超碰色| 在线观看成人小视频| 欧美精品一区二区三区视频| 亚洲精品中文字幕乱码三区| 乱一区二区av| 欧美日韩你懂得| 亚洲欧洲日本在线| 狠狠色狠狠色综合日日91app| 色偷偷88欧美精品久久久| 精品国产免费久久| 欧美高清视频www夜色资源网| 精品视频一区 二区 三区| 久久久亚洲国产美女国产盗摄| 一区二区三区中文字幕| 国产精品白丝jk黑袜喷水| 欧美精品高清视频| 自拍偷在线精品自拍偷无码专区| 九九精品一区二区| 欧美剧情片在线观看| 亚洲国产精品久久一线不卡| 成人黄色在线网站| 久久综合成人精品亚洲另类欧美| 天天影视网天天综合色在线播放| 99r精品视频| 国产精品欧美极品| 成人永久看片免费视频天堂| 欧美va亚洲va| 美女尤物国产一区| 日韩欧美在线1卡| 日韩精品五月天| 欧美狂野另类xxxxoooo| 亚洲成人久久影院| 在线免费观看日本欧美| 亚洲麻豆国产自偷在线| av爱爱亚洲一区| 悠悠色在线精品| 欧美羞羞免费网站| 亚洲午夜久久久| 亚洲观看高清完整版在线观看|