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

掃一掃
關注微信公眾號

利用格式化字符串漏洞對系統(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之前,我們應該深入領會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)在不同體系結構、操作系統(tǒng)、環(huán)境甚至是命令行長度。經(jīng)過簡單調(diào)整,這些例子可以在其他x86平臺上工作。通過努力也可以在其他體系結構的平臺上工作。

用Format攻擊

現(xiàn)在是我們戴上黑帽子開始以攻擊者方式思考問題的時候了。我們現(xiàn)在手頭有一個測試程序。知道這個程序有一個漏洞并且了解程序員是在哪里犯錯誤的(直接把用戶輸入的命令行參數(shù)作為snprintf的格式化參數(shù))。我們還擁有關于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


熱詞搜索:

上一篇:如何加強Linux系統(tǒng)在企業(yè)安全方面的管理(下)
下一篇:安全廠商關于Vista的安全評估是否可信

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
91在线小视频| 欧美精品一区二区三区一线天视频 | 国产一区亚洲一区| 色婷婷久久99综合精品jk白丝 | 在线观看欧美日本| 国产亚洲一区二区三区在线观看| 亚洲成av人片一区二区三区| 日韩一级高清毛片| 亚洲精品日日夜夜| 精品一区二区日韩| 欧美另类一区二区三区| 亚洲蜜臀av乱码久久精品| 久久99久久精品| 在线观看视频91| 亚洲天堂福利av| 大白屁股一区二区视频| 欧美精品一区二区三区一线天视频| 亚洲成av人综合在线观看| 91偷拍与自偷拍精品| 久久精品人人做人人综合| 秋霞成人午夜伦在线观看| 欧美精品在线观看播放| 亚洲综合小说图片| 色欧美片视频在线观看在线视频| 国产午夜精品久久久久久免费视| 国产在线播放一区二区三区| 精品日韩在线观看| 亚洲欧洲性图库| 成人午夜精品一区二区三区| 久久久久久日产精品| 韩国精品一区二区| 久久久美女毛片| 成人午夜免费电影| 最近日韩中文字幕| 色老头久久综合| 亚洲成va人在线观看| 欧美裸体bbwbbwbbw| 日日摸夜夜添夜夜添精品视频| 欧美日韩在线直播| 三级欧美在线一区| 精品国产污网站| 风间由美一区二区av101| 国产精品欧美极品| 色菇凉天天综合网| 水野朝阳av一区二区三区| 日韩欧美中文字幕公布| 国产999精品久久| 伊人色综合久久天天人手人婷| 欧美亚洲国产bt| 国产在线播放一区| 亚洲人成网站色在线观看| 欧美日韩不卡在线| 国产一区欧美一区| 成人亚洲一区二区一| 中文字幕佐山爱一区二区免费| aaa亚洲精品一二三区| 亚洲素人一区二区| 欧美丝袜第三区| 日本不卡1234视频| 国产蜜臀av在线一区二区三区| 91丨porny丨在线| 日本在线不卡一区| 中文字幕va一区二区三区| 欧美自拍偷拍午夜视频| 老司机精品视频在线| 国产精品第一页第二页第三页| 欧美色综合网站| 国产一区二区三区高清播放| 亚洲精品视频在线看| 日韩一区二区精品葵司在线| 从欧美一区二区三区| 蜜臀久久久久久久| 自拍偷拍亚洲综合| 欧美xxxxxxxx| 欧美午夜精品一区二区三区| 激情久久五月天| 亚洲午夜三级在线| 中文字幕在线不卡一区 | 精品在线亚洲视频| 亚洲精品久久嫩草网站秘色| 精品久久国产字幕高潮| www.欧美.com| 日韩激情av在线| 中文欧美字幕免费| 精品国产一区二区三区久久影院 | 久久不见久久见免费视频1| 自拍偷拍亚洲欧美日韩| 2023国产精品| 91精品国产综合久久久蜜臀图片| 成人免费视频网站在线观看| 男女视频一区二区| 视频在线观看一区| 亚洲最大色网站| 亚洲免费观看高清完整版在线 | 国产福利一区二区三区视频在线 | 亚洲在线一区二区三区| 久久久国产午夜精品| 欧美日韩久久一区| 91亚洲精品一区二区乱码| 国产精品亚洲午夜一区二区三区| 蜜桃精品视频在线| 日韩精品免费视频人成| 亚洲图片欧美视频| 亚洲精品久久7777| 亚洲免费av高清| 91免费观看视频| 日韩二区三区四区| 午夜精品福利一区二区蜜股av| 亚洲精品成a人| 亚洲精品视频在线观看网站| 亚洲蜜臀av乱码久久精品蜜桃| 一区在线中文字幕| 亚洲久草在线视频| 亚洲午夜激情av| 香蕉成人伊视频在线观看| 视频在线观看国产精品| 日韩黄色免费电影| 久久精品国产亚洲高清剧情介绍| 日本成人在线不卡视频| 蜜臀国产一区二区三区在线播放| 日韩精品高清不卡| 精品一区二区久久| 国产成人精品免费网站| 成人深夜在线观看| 色视频一区二区| 在线电影国产精品| 欧美精品一区二区蜜臀亚洲| 久久久亚洲精品石原莉奈| 国产欧美日韩另类一区| 18成人在线视频| 亚洲福利一区二区| 激情久久久久久久久久久久久久久久| 久久国产视频网| 成人午夜视频免费看| 欧美在线免费播放| 日韩一区二区免费高清| 久久蜜桃av一区二区天堂| 中文字幕av不卡| 亚洲一区二区三区三| 免费观看成人av| 成人午夜精品一区二区三区| 欧美在线一区二区| 精品国产99国产精品| 1000精品久久久久久久久| 视频一区视频二区中文字幕| 国产一区二区三区免费| 色网综合在线观看| 欧美一区二区三区四区久久| 国产视频一区二区在线观看| 亚洲一区二区三区四区的| 精品一区二区免费看| 欧洲国内综合视频| 久久久99免费| 亚洲电影一级片| 成人一道本在线| 日韩欧美中文字幕制服| 一区二区三区四区五区视频在线观看| 卡一卡二国产精品| 91美女蜜桃在线| 2024国产精品| 天堂精品中文字幕在线| 大桥未久av一区二区三区中文| 成人午夜激情片| 欧美一区二区福利在线| 亚洲日本免费电影| 国模冰冰炮一区二区| 51久久夜色精品国产麻豆| 亚洲欧美另类图片小说| 国产一区二区毛片| 日韩无一区二区| 亚洲国产色一区| 99久久精品99国产精品| 久久久精品国产免大香伊| 亚洲午夜久久久| 97久久超碰精品国产| 国产亚洲视频系列| 美腿丝袜一区二区三区| 欧美日韩不卡一区二区| 一区二区三区资源| av高清不卡在线| 国产女人aaa级久久久级| 久草这里只有精品视频| 欧美另类一区二区三区| 亚洲成人福利片| 色老综合老女人久久久| 亚洲视频资源在线| 成人av资源在线| 国产精品素人视频| 成人性视频网站| 国产精品欧美精品| 国产a视频精品免费观看| 精品久久久三级丝袜| 免费高清在线一区| 欧美xfplay| 国产真实乱对白精彩久久| 日韩精品中午字幕| 国产尤物一区二区在线| 久久精品一区二区三区不卡牛牛| 精品亚洲成av人在线观看| 精品国产一二三|