色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Fuzzing101實踐之GIMP

我快閉嘴 ? 來源:IOTsec-Zone物聯網安全社區 ? 作者:有毒 ? 2022-09-30 11:26 ? 次閱讀

6. Fuzzing101 - 6 GIMP

1. 目標環境配置

本次的目標程序是一個帶有GUI的可交互的程序,在構建編譯上會比之前的軟件稍微有一丟丟復雜。

首先要安裝gimp會使用到的 GEGL 0.2(Generic Graphics Library),嘗試使用源碼編譯:

# install  dependenciessudo apt install build-essential libatk1.0-dev libfontconfig1-dev libcairo2-dev libgudev-1.0-0 libdbus-1-dev libdbus-glib-1-dev libexif-dev libxfixes-dev libgtk2.0-dev python2.7-dev libpango1.0-dev libglib2.0-dev zlib1g-dev intltool libbabl-dev# download and uncompresswget https://download.gimp.org/pub/gegl/0.2/gegl-0.2.0.tar.bz2tar xvf gegl-0.2.0.tar.bz2 && cd gegl-0.2.0# modify the source codesed -i 's/CODEC_CAP_TRUNCATED/AV_CODEC_CAP_TRUNCATED/g' ./operations/external/ff-load.csed -i 's/CODEC_FLAG_TRUNCATED/AV_CODEC_FLAG_TRUNCATED/g' ./operations/external/ff-load.c# build and install./configure --enable-debug --disable-glibtest  --without-vala --without-cairo --without-pango --without-pangocairo --without-gdk-pixbuf --without-lensfun --without-libjpeg --without-libpng --without-librsvg --without-openexr --without-sdl --without-libopenraw --without-jasper --without-graphviz --without-lua --without-libavformat --without-libv4l --without-libspiro --without-exiv2 --without-umfpackmake -j$(nproc)sudo make install

這里對于 GEGL 這個圖形庫的編譯安裝我們不做過多介紹,這不是我們的重點,可以明確告知的是上面的庫在編譯時大概率會編譯報錯,導致一些庫文件編譯失敗。所以,對于Ubuntu 20.04以上版本(我使用的是22.04)可以直接 sudo apt install libgegl-0.4-0來安裝這個0.4版本的庫。(盡量不在非fuzz階段浪費時間)

然后,下載 GIMP 2.8.16,并進行編譯安裝:

# download cd ..wget https://mirror.klaus-uwe.me/gimp/pub/gimp/v2.8/gimp-2.8.16.tar.bz2tar xvf gimp-2.8.16.tar.bz2 && cd gimp-2.8.16/# build and installCC=afl-clang-lto CXX=afl-clang-lto++ PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" ./configure --disable-gtktest --disable-glibtest --disable-alsatest --disable-nls --without-libtiff --without-libjpeg --without-bzip2 --without-gs --without-libpng --without-libmng --without-libexif --without-aa --without-libxpm --without-webkit --without-librsvg --without-print --without-poppler --without-cairo-pdf --without-gvfs --without-libcurl --without-wmf --without-libjasper --without-alsa --without-gudev --disable-python --enable-gimp-console --without-mac-twain --without-script-fu --without-gudev --without-dbus --disable-mp --without-linux-input --without-xvfb-run --with-gif-compression=none --without-xmc --with-shm=none --enable-debug  --prefix="$HOME/Desktop/Fuzz/training/fuzzing_gimp/gimp-2.8.16/install"AFL_USE_ASAN=1 make -j$(nproc)AFL_USE_ASAN=1 make install

這里的編譯選項有點多,第一次的時候盡可能保持一致,避免出錯,如果要進行優化和改進,可根據實際需求來增刪編譯選項。

編譯完成后檢查軟件是否可以正常運行,命令行和圖形界面都檢查一下。

2. AFL++編譯target

1. Persistent Mode

Persistent Mode 是 AFL 提供的一種可以加快fuzz 執行速度的功能,詳細原理我們在源碼解析的文章中已經進行了深入的介紹,這里大家只需要簡單理解成無需每次都進行 fork 操作,而只是在程序的某一特定位置進行循環 fuzz。

2. 修改源碼

我們需要在源碼中找合適的位置插入 persistent mode 的執行代碼,對于本例而言,有兩處可以插入。第一處是 app.c 文件:

84df259c-3ff1-11ed-b1c7-dac502259ad0.png

第二處是 xcf.c 文件:

84fe3860-3ff1-11ed-b1c7-dac502259ad0.png

至于為什么選擇這兩個地方進行 fuzz ,就看大家對軟件流程和功能的理解程度了。

我們這里執行時,兩種方案都測試一下。第二種方案,通過打補丁的方式來修改源碼,補丁如下:

--- ../xcf.c  2014-08-20 08:27:58.000000000 -0700+++ ./app/xcf/xcf.c  2021-10-11 13:02:42.800831192 -0700@@ -277,6 +277,10 @@  filename = g_value_get_string (&args->values[1]);+#ifdef __AFL_COMPILER+ while(__AFL_LOOP(10000)){+#endif+  info.fp = g_fopen (filename, "rb");  if (info.fp)@@ -366,6 +370,12 @@  if (success)   gimp_value_set_image (&return_vals->values[1], image);+#ifdef __AFL_COMPILER+ }+#endif++ exit(0);+  gimp_unset_busy (gimp);  return return_vals;

需要注意的是,最后的 exit(0);一定要有,否在程序會在 console 模式下卡住,導致 fuzz 的 test 都超時。

進行patch:

patch gimp-2.8.16/app/xcf/xcf.c -i persistent.patch

3. 執行fuzz

測試用例我們用一個最簡單的:

mkdir afl_in && cd afl_inwget https://github.com/antonio-morales/Fuzzing101/blob/main/Exercise%206/SampleInput.xcf

這里還要注意,刪除掉 gimp 的插件,這些插件可能會導致 gimp 運行失敗:

rm ./install/lib/gimp/2.0/plug-ins/*

最后開啟 fuzz:

ASAN_OPTIONS=detect_leaks=0,abort_on_error=1,symbolize=0 afl-fuzz -i './afl_in' -o './afl_out' -D -t 200 -M master -- ./gimp-2.8.16/install/bin/gimp-console-2.8 --verbose -d -f @@ASAN_OPTIONS=detect_leaks=0,abort_on_error=1,symbolize=0 afl-fuzz -i './afl_in' -o './afl_out' -D -t 200 -S slave1 -- ./gimp-2.8.16/install/bin/gimp-console-2.8 --verbose -d -f @@





審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Target
    +關注

    關注

    0

    文章

    13

    瀏覽量

    8482
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32891
  • Fuzzing
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7276
  • GUI
    GUI
    +關注

    關注

    3

    文章

    661

    瀏覽量

    39716

原文標題:【技術干貨】Fuzzing101全實踐 -- (三)

文章出處:【微信號:IOTsec Zone,微信公眾號:IOTsec Zone】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    簡單美——軟件開發實踐者的思考

    ` 本帖最后由 zgzzlt 于 2012-8-16 14:01 編輯 簡單美——軟件開發實踐者的思考`
    發表于 08-06 12:29

    《電子DIY》《單片機實踐項目》基于51單片機的打地鼠設計與制作

    《電子DIY》《單片機實踐項目》基于51單片機的打地鼠設計與制作,此課程主要講解如何使用51單片機進行實戰應用,分為多次課,每次課都會分別圍繞一個課程設計或畢業設計(實踐項目)展開
    發表于 07-20 06:46

    基于Fuzzing的藍牙OBEX漏洞挖掘技術

    Fuzzing是一種自動化的漏洞挖掘技術。該文在分析OBEX 協議的基礎上,利用Fuzzing技術,設計并實現了藍牙OBEX協議的Fuzzer工具——OBEX-Fuzzer,并且利用該工具對OBEX協議在Nokia N73和SMH-BT555
    發表于 04-15 08:33 ?16次下載

    實踐電磁兼容設計PCB基本布線措施

    實踐電磁兼容設計PCB基本布線措施,有興趣的同學可以下載學習
    發表于 04-27 15:28 ?62次下載

    實踐電磁兼容設計PCB布線基本措施

    實踐電磁兼容設計PCB布線基本措施。
    發表于 11-02 15:44 ?0次下載

    高性能16位數字信號控制器dsPIC33FJ16MC101/102產品手冊

    本文主要介紹了高性能16位數字信號控制器dsPIC33FJ16MC101/102產品手冊.
    發表于 06-28 10:25 ?14次下載
    高性能16位數字信號控制器<b class='flag-5'>之</b>dsPIC33FJ16MC<b class='flag-5'>101</b>/102產品手冊

    怎樣用GIMP從圖像中刪除白色背景

    您知道從互聯網下載的大多數圖像上令人討厭的白色(或任何顏色)背景嗎?好吧,這是使用GIMP刪除它的方法。 GIMP是一款免費軟件,類似于Photoshop的替代軟件。我想還有其他方法,很費時間,但這是我發現的最簡單的方法。..
    的頭像 發表于 10-05 17:53 ?8829次閱讀

    怎樣使用GIMP制作圖像地圖

    如果沒有圖像,創建圖像映射將非常困難。因此,您要做的第一件事是從interwebz中獲取一個,或者從頭開始創建一個(使用GIMP,obvs)。由于編輯和創建圖像可能應該是它自己的教程,因此我們假設您
    的頭像 發表于 12-11 15:00 ?2126次閱讀

    測控工程實踐LabVIEW實踐教程

    測控工程實踐LabVIEW實踐教程說明。
    發表于 04-19 14:29 ?43次下載

    《電子DIY》《單片機實踐項目》基于單片機的三路搶答器設計與制作

    《電子DIY》《單片機實踐項目》基于單片機的三路搶答器設計與制作添加鏈接描述
    發表于 11-05 11:21 ?22次下載
    《電子DIY》<b class='flag-5'>之</b>《單片機<b class='flag-5'>實踐</b>項目》<b class='flag-5'>之</b>基于單片機的三路搶答器設計與制作

    《電子DIY》《單片機實踐項目》基于單片機的簡易數字秒表的設計(Proteus仿真與實物制作)

    《單片機實踐項目》基于單片機的簡易數字秒表的設計(八十二)鏈接:添加鏈接描述
    發表于 11-12 20:21 ?20次下載
    《電子DIY》<b class='flag-5'>之</b>《單片機<b class='flag-5'>實踐</b>項目》<b class='flag-5'>之</b>基于單片機的簡易數字秒表的設計(Proteus仿真與實物制作)

    電氣控制從理論到實踐電動機控制一點通

    電氣控制從理論到實踐電動機控制一點通
    發表于 02-08 14:22 ?0次下載

    AEC-Q101 標準TC解讀

    AEC-Q101標準TC解讀TC(TemperatureCycling)高溫循環測試意義在于證實極高溫度,極低溫度和高溫與低溫交替作用時,機械應力對于器件焊接性能的作用,標準AEC-Q101-E中
    的頭像 發表于 08-30 08:27 ?2093次閱讀
    AEC-Q<b class='flag-5'>101</b> 標準<b class='flag-5'>之</b>TC解讀

    從理論到實踐pcb阻抗控制表的使用

    從理論到實踐pcb阻抗控制表的使用
    的頭像 發表于 09-26 10:34 ?699次閱讀

    4G模組UDP應用的最佳實踐

    今天說的是4G模組UDP應用,展示最佳實踐,送你參考。
    的頭像 發表于 11-08 09:24 ?404次閱讀
    4G模組<b class='flag-5'>之</b>UDP應用的最佳<b class='flag-5'>實踐</b>!
    主站蜘蛛池模板: 色狠狠色综合吹潮| 精品无人区一区二区三区| 国产成人亚洲综合无| 蜜臀AV熟女人妻中文字幕| 野花韩国视频中文播放| 国产精品日本欧美一区二区| 欧美16一17sex性hd| 中文字幕在线免费观看视频| 黑人寄宿羽月希产后奶水| 性生交片免费无码看人| 国产精品三级在线观看| 午夜神器18以下不能进免费| 国产手机在线精品| 亚洲成人三级| 黑人巨摘花破女处| 99热国产这里只有精品免费| 女性BBWBBWBBWBBW| 国产精品免费视频能看| 一区二区乱子伦在线播放| 噜噜噜狠狠夜夜躁| 99国产视频| 青青草原国产在线观看| 宝贝乖女好紧好深好爽老师| 色戒未删减版在线观看完整| 久久国产免费观看精品1| 91麻豆久久| 人妻中文字幕无码久久AV爆| 国产成人a在一区线观看高清| 亚洲性无码av在线| 麻婆豆腐传媒视频免费| 阿娇和冠希13分钟在线观看| 亚洲精品AV一二三区无码| 久久久久久久尹人综合网亚洲 | 欧美亚洲日本日韩在线| 超碰97视频在线观看| 翁用力的抽插| 久久成人a毛片免费观看网站| 大胸美女脱内衣黄网站| 亚洲欧洲日韩天堂无吗| 玖玖爱在线播放| 成人精品在线视频|