note.muã§ã表é¡ã®ã·ãªã¼ãºãæ¸ãå§ãã¾ãããç®æ¬¡ããã©ããã
æ¸ããã¨æã£ããã£ããã¯ãã®ã¨ã³ããªã®æå¾ã«æ¸ãã¦ããã¾ãã
誰ãã®å½¹ã«ç«ã¤ãã¨ãé¡ã£ã¦ã
ç®ç
OllyDbgã使ã£ã¦x86ã¢ã»ã³ãã©ï¼32ãããï¼ã¨ãããã¬ã®åºç¤ã®åºç¤ãå¦ã¶ãã¨ã
ç®æ¬¡ï¼éææ´æ°ï¼
第零話:まずは動かしてみる 〜ブレイクポイントとステップ実行〜
第一話:ステップイン・ステップオーバー・ステップアウト
第二話:メモリマップから見るコードとスタックの場所
第三話:ASLRの意味をデバッガで見てみる
第四話:CALL命令で起こること
第五話:スタックとLIFO、だから何?(怒)
第六話:EBPとESP、スタック領域の使われ方
第ä¸è©±ï¼CALLå½ä»¤ã§èµ·ãããã¨ã»å
æçµè©±ï¼å¤ãè¯ããããã¡ãªã¼ãã¼ããã¼æ»æã®ä»çµã¿
以ä¸æªå®
# æ¸ãã¦ãããã¡ã«å¤æ´ããããã
# å®çµãããAmazonã®é»åæ¸ç±ã¨ãã¦åºãã¦ã¿ãããã¨æã£ã¦ãã¾ãã
å¿ è¦ãªåæç¥è
ãã®Cè¨èªã®ã½ã¼ã¹ãè¦ã¦ä½ããã£ã¦ãããåãããã¨
#include int sub(int i, int j) { int x = 0; x = i + j; return x; } main() { int a = 0, b = 0, ans = 0; a = 10; b = a + 100; ans = sub(a, b); printf("%d\n",ans); }
ãããã³ã³ãã¤ã«ããexeãã¡ã¤ã«ãé¡æã«ã解説ãé²ãã¦ããäºå®ã§ãã
main()é¢æ°ããå§ã¾ã£ã¦ã¼sub()é¢æ°å¼ã³åºãã¦ã¼ãã®çµæãprintf()é¢æ°ã§æ¸ãåºãã¦ã¼ã¨ããã®ãå
¨ãåãããªãã¨å¤åã¤ããã§ãã
16é²æ°ã»2é²æ°ãç解ãã¦ãããã¨
ã»ã»ã¯ãã°ã°ã£ã¦åºã¦ãããã®ãèªãã°äºè¶³ãã¾ãã
ç°å¢
çè ã®ç°å¢ã¯ä»¥ä¸ã®ã¨ããã§ãã
OS | Windows 7 SP1 32ãããçï¼ASLRç¡å¹åæ¸ï¼ |
ããã㬠| OllyDbg v2.01 |
ã³ã³ãã¤ã© | Visual Studio Express 2012 for Windows Desktopã«å梱ããã¦ãããã® |
# çè ã®ç°å¢ã¯32ãããã§ãããå¦ã¶ã®ã«32ãããçWindowsãå¿ è¦ãªããã§ã¯ããã¾ããã
OllyDbg
èªã¿æ¹ã¯ããªãªãããã°ããç¥ãã¦ããªãªãã¨å¼ã°ããããªã¼ã®ãããã¬ã§ãã
公式サイトããææ°çããã¦ã³ãã¼ããã¦ã¤ã³ã¹ãã¼ã«ãã¦ãã ããã
ä»å使ãã®ã¯ãã¼ã¸ã§ã³2ã§ããã1ã®æ¹ã¯æ¥æ¬èªåãããã©ã°ã¤ã³ãåºã¦ãã¾ãããã®ã·ãªã¼ãºã«é¢ãã¦ã¯1ç³»ã§ã2ç³»ã§ã大ä¸å¤«ã ã¨æãã¾ãã
Visual Studio Express 2012 for Windows Desktop
ãµã³ãã«ã®exeãã¡ã¤ã«ãã¢ããããã¤ãããªã®ã§å¿ è¦ãªããã§ããããã¾ãåããªãå ´åãããã¨æãã®ã§ä¸å¿ã³ã³ãã¤ã©ã«ã¤ãã¦ã®æ å ±ãã
Visual Studioã¯Microsoftãæä¾ãã¦ããç·åéçºç°å¢ã§ããã®ããªã¼çãExpressã¨ãã¦å ¬éããã¦ãã¾ãã
ã³ã³ãã¤ã«ãããå ´åã«ã¯ã公式サイトããèªåã®ç°å¢ã«ãã£ããã®ããã¦ã³ãã¼ããã¦ã¤ã³ã¹ãã¼ã«ãã¦ãã ãããçµæ§æéããããã¾ãã
ã¤ã³ã¹ãã¼ã«å¾ãã¹ã¿ã¼ãã¡ãã¥ã¼ãããVisual Studio ãã¼ã«ãã®ä¸ã®ãVS2013 x86 Native Tools ã³ãã³ã ããã³ãããã¨ããã®ãèµ·åããclã³ãã³ããå®è¡ããã¨ã³ã³ãã¤ã«ãããã¨ãã§ãã¾ãã
ä¾ãã°main_sub.cã¨ããCã®ãã¡ã¤ã«ãã³ã³ãã¤ã«ããã¨ãããªæãã
>cl main_sub.c Microsoft(R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x86 Copyright (C) Microsoft Corporation. All rights reserved. main_sub.c Microsoft (R) Incremental Linker Version 12.00.21005.1 Copyright (C) Microsoft Corporation. All rights reserved. /out:main_sub.exe main_sub.obj
ãã®ã·ãªã¼ãºãæ¸ãä¸ã§åèã«ããæ¬
- ä½è :è²å° è¼å°
- åºç社/ã¡ã¼ã«ã¼: ã¢ã¹ãã¼
- çºå£²æ¥: 1987/03
- ã¡ãã£ã¢: åè¡æ¬
åççºè¡1987å¹´ã¨ãããµã£ããæ¬ã§ãããã³ã³ãã¥ã¼ã¿ãexeãã¡ã¤ã«ãå®è¡ããã¨ãã«èµ·ãããã¨ãããåããæ¬ã§ããæ¬ã·ãªã¼ãºã32ãããã®è©±ãªã®ã«å¯¾ãããã®æ¬ã¯ãã®å身ã®16ãããã®è©±ãªã®ã§ã¬ã¸ã¹ã¿ã®ååã¨ãå½ä»¤ãè¥å¹²éãã¾ããã§ãCPUãã¡ã¢ãªã®åºç¤ç¥èã¯ããã§èº«ã«ä»ããã¨ããããªãã¨ãæåã¯èªãã§ãããåãããªãããããã¾ãããããã®æ¬ã«æ¸ããã¦ãããã¨ãç¥ã£ã¦ãããå¦ãã§ãæ¬ã·ãªã¼ãºã®ç解度ã¯ããªãå¤ããã¨æãã¾ãã
ã»ã»ã»ã¨æã£ããããã絶çï¼æ¬å±ããã§ã¯è¦ããã¾ããAmazonã§ã¯å¤æ¬ãã売ã£ã¦ãªãã§ãããå¾ç¶ã®486ãªãKindleçãããã¾ããã
32ãããã³ã³ãã¥ã¼ã¿ãããããèªããã¯ããã¦èªã486 (ã¢ã¹ãã¼æ¸ç±)
- ä½è :è²å°è¼å°
- åºç社/ã¡ã¼ã«ã¼: è§å·ã¢ã¹ãã¼ç·åç 究æ
- çºå£²æ¥: 2014/10/21
- ã¡ãã£ã¢: Kindleç
ãã¡ãã¯32ããããªã®ã§ãã¾ãã«x86ã¢ã»ã³ãã©ã®è©±ãæ¸ãã¦ããã¾ããå¤æ¬ããã¼ã¨ããæ¹ã¯ãã£ã¡ã§ãããããã
ã»ã»ããCPUãã¡ã¢ãªã®ä½¿ããæ¹ãå¦ã¶ã¨ããæå³ã§ã¯ã8086ã®æ¹ã詳ããã¨æãã¾ãã
Panic!âUNIXã·ã¹ãã ã¯ã©ãã·ã¥ã®è¿½æ±ã¨å¯¾ç (ãµã³ã½ãããã¬ã¹ã·ãªã¼ãº)
- ä½è :Chris Drake,Kimberley Brown
- åºç社/ã¡ã¼ã«ã¼: ã¢ã¹ãã¼
- çºå£²æ¥: 1996/12
- ã¡ãã£ã¢: åè¡æ¬
ããã1996å¹´çºè¡ã¨ããªãå¹´æå
¥ã£ã¦ã¾ããã ã£ã¦æã¯å
¨ç¶ãã®æã®æ¬ãªãã£ããã ãã®ã
ãã¯ã絶çã®ããã§ãä¸ææã¯ä¸å¤æ¬ã§3ä¸åãããã®é«å¤ãä»ãã¦ãããã§ããã ãã¶ä¸ãã£ã¦ã¾ããã
SPARCã¢ã»ã³ãã©ãæ¸ãããã«è²·ã£ããã®ãªã®ã§æ¬ã·ãªã¼ãºã«ã¯å
¨ãå¿
è¦ãªãã§ããx86ã¢ã»ã³ãã©ã£ã¦ç¾ãããªããªãã¨æã£ãæ¹ã¯èªãã§ã¿ãã¨æåããããããã¾ããã
ä¸å¿ãã¢ã»ã³ãã©ãã¬ã¸ã¹ã¿ã«ã¤ãã¦ã®åºæ¬çãªãã¨ã¯è¼ã£ã¦ãã¾ãã»ã»ãx86ã§ã¯ãªãã®ã§æ¬ã·ãªã¼ãºã§åãã¦ã¢ã»ã³ãã©ãå¦ã¶ã¨ãã人ã¯æ··ä¹±ããããããã¾ããã
- ä½è :åäº å¼äº®
- åºç社/ã¡ã¼ã«ã¼: ç§åã·ã¹ãã
- çºå£²æ¥: 2014/09/30
- ã¡ãã£ã¢: åè¡æ¬
ãã¡ãã¯æã£ã¦å¤ãã£ã¦ãã®ãããæ°ããæ¬ã§ãã2014å¹´9æçºè¡ã
å§åçãªæ
å ±éãªã®ã§æ¬æ ¼çã«ã¢ã»ã³ãã©ãå¦ã³ãã人ã«ã¯å¿
æºã ã¨æããã¾ãããã¢ã»ã³ãã©èªä½ã®è§£èª¬ã¯PowerPCã®ã¢ã»ã³ãã©ã使ã£ã¦è¡ããã¦ããããã¡ããæ¬ã·ãªã¼ãºã§åãã¦ã¢ã»ã³ãã©ãå¦ã¶ã¨ãã人ã¯æ··ä¹±ããããããã¾ããã
ãã®ã·ãªã¼ãºãæ¸ããã¨æã£ããã£ãã
ï¼éè«ãªã®ã§èªã¿ããæ¹ã ãã©ãããï¼
ããããä»å¹´åº¦ã®å¯ããªç®æ¨ã¨ãã¦ãèªåã®æã£ã¦ããç¥èãå½¢ã«ãã¦å
¬éããã¨ããã®ãããã¾ãããç§ã¯æã¯ãããã¯ã¼ã¯å¯ãã®ã»ãã¥ãªãã£å±ããã§ããã±ãã解æãã£ããã·ã§ã«ã³ã¼ãæ¸ããããã¦ãã¾ãããSlammerã®ã³ã¼ãã¯å
¨é¨èªã¿ã¾ãããæããããã¼ã
ãã ããªããªã¨ãã£ã¦ããã®ã¯6å¹´åã¾ã§ã§ç¥èãå¤ããªã£ã¦ãããï¼ã¤ã¼ãããè¦ãã¦ãªããï¼ãå½æã®å®ç§ç¾©åãããã®ã§ãä½ãã©ãå ¬éããã®ãããã®ãããåããããã©ããããããªãã¨æã£ã¦ãã¾ããã
ã¨ããã¨ããã«ãCTF for GIRLSã¨ããã»ãã¥ãªãã£ã®ã¤ãã³ãã®ãæä¼ããããã¨ã«ãªããåå è ã®ã¢ã³ã±ã¼ããè¦ã¦ãããã¡ã«ããã»ãã¥ãªãã£ã«èå³ãããã»ä»äºã§é¢ãããã©ä½ããã¦ããã®ãããããªããã¨ãã人ãé常ã«ãããããããã¨ãåããããããã§æ¢ãã°åºã¦ãããããªåºæ¬çãªãã¨ã§ãã系統ã ã¦ã¦æ¸ãã¦ã¿ããæå¤ã¨å½¹ã«ç«ã¡ããã ã¨æããæ¸ãã¦ã¿ããã¨ã«ãã次第ã§ããç§ãã»ãã¥ãªãã£ã®ä»äºãå§ããå½æããããããã³ã³ãã³ãããã£ããã¡ãã¼å¬ããã£ãã®ã«ãªããã¨æãããããªãã®ã«ããã¤ããã§ãã
ãã¾ãã¾2014å¹´7æã«éæ¥å±ãåºãããã§ãããããªã¼ã©ã¤ã¿ã¼ãã¨ããè©æ¸ãæã«å ¥ããã®ã§ãæ§åãè¦ã¦èªã¿ããã¨ãã人ãå¤ãããªããææã³ã³ãã³ãã売ãã¨ããå½¢ã§ãã£ã¦ã¿ããã¨æãã¾ãã
ä»ã¯ãã64ãããã主æµã§ãã¡ã¢ãªã®ä½¿ããæ¹ãã ãã¶å¤ãã£ã¦ãã¾ã£ãã®ã§ããã®ç¥èãç´æ¥ä½ãã®å½¹ã«ç«ã¤ãã¨ã¯ãªãããããã¾ããããæ´å²ã¨åºæ¬ãå¦ã¶ãã¨ã¯æè¡å±ã«ã¨ã£ã¦ã¯å¾ããã®ãå¤ãã¨ä¿¡ãã¦ãã¾ãã
é¢é£è¨äº
pwnã®ç°¡åãªåé¡ãLinuxã§ã®ãããã¬ï¼gdbï¼ã使ã£ã¦è§£ããè¨äºã§ãã
security.nekotricolor.com
ã¢ã»ã³ããªã³ã¼ããæ¸ããã¨ã«ç¹åããåé¡ã®write-upã§ãã
security.nekotricolor.com