More Related Content Similar to CTF(Capture the Flag)って何? (20) CTF(Capture the Flag)って何?38. Trivia 100 問題:Name the X files episode that focuses on “a hacker con”.(ドラマ「Xファイル」の中で”a hacker con”を題材にしたエピソードは何?) 39. Trivia 100 問題:Name the X files episode that focuses on “a hacker con”.(ドラマ「Xファイル」の中で”a hacker con”を題材にしたエピソードは何?) とりあえず、タイトル全部試してみれば? 43. Forensics 500 問題: あるシステムの物理メモリイメージを配布する. このイメージがダンプされた際に起動していたfoo.exeの中にある“forensics challenge”という文字列の仮想アドレスを答えよ. 45. Forensics 500 解答への流れ 物理メモリイメージからプロセスを切り出す プロセス情報にあるPDBを取得 PDBから仮想アドレスマップを生成 仮想アドレスイメージから文字列を探す 文字列のある仮想アドレスが解答 http://ruffnex.oc.to/kenji/hiki/hiki.cgi?DEFCON+CTF+'07+Forensics+500 51. Crypto 100 解答:携帯電話のキータッチ in cryptography asubstitution cipher is a method of encryption by which units of plain text are replaced with cipher text according to a regular system the units maybe single letters pairs of letters triplets of letters mixtures of the above this cipher text is encrypted by telephone keypad so we call this keypad cipher 59. bunny rand() 4. fork 4. connect 1. connect 3. connect 15323 2. fork buffer rand() 62. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 実行ファイルを逆アセンブル srand(time(0)); v = rand()% 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } 63. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 time(0)から生成されているので推測可能 実行ファイルを逆アセンブル srand(time(0)); v = rand()% 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } 64. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 実行ファイルを逆アセンブル srand(time(0)); v = rand() % 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } 65. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 最大35バイトしか コピーできない 実行ファイルを逆アセンブル srand(time(0)); v = rand() % 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } 66. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 実行ファイルを逆アセンブル srand(time(0)); v = rand() % 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } ただし、bufferの先に変数vが存在 buffer 67. 問題点は2つ ランダムなポートの推測 shellcodeの置き場所 実行ファイルを逆アセンブル srand(time(0)); v = rand() % 30 + 5; i = 0; while(i < v){ listen_port= rand() % (signed int)0xFBFFu + 0x400; close(listen_fd); listen_fd= server_listen(listen_port); accept(listen_fd); i++; } つまり、変数vを上書きして 任意のサイズをコピーできる buffer 71. Binary 100 問題:これは何のライブラリ関数? 00000000 89C7 MOV EDI,EAX 00000002 89DE MOV ESI,EBX 00000004 89CA MOV EDX,ECX 00000006 C1E9 02 SHR ECX,2 00000009 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 0000000B 89D1 MOV ECX,EDX 0000000D 81E1 04000000 AND ECX,3 00000013 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 00000015 C3 RETN 72. Binary 100 問題:これは何のライブラリ関数? 00000000 89C7 MOV EDI,EAX 00000002 89DE MOV ESI,EBX 00000004 89CA MOV EDX,ECX 00000006 C1E9 02 SHR ECX,2 00000009 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 0000000B 89D1 MOV ECX,EDX 0000000D 81E1 04000000 AND ECX,3 00000013 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 00000015 C3 RETN memcpy