Harekazeというチームで、Sharif7CTFに参加していました。
Harekazeは651点で122位でした。出場チームは700で、そのうち1点より多い点を入れているのが、380なので、半分より少し上といったところです。日本チームのうちでは6位でした。
私は651点のうち300点にあたる二問を解いたのでWriteUpします。
StrangePDF
%PDF-1.7 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /MediaBox [ 0 0 500 800 ] /Count 1 /Kids [ 3 0 R ] >> endobj 3 0 obj << /Type /Page /Parent 2 0 R /Resources << /XObject << /A 6 0 R >> >> /Contents 5 0 R >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman >> endobj 5 0 obj << /Length 359 >> stream q 10 0 0 10 250 400 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do 0.7 0.5 -0.5 0.7 0 0 cm /A Do Q endstream endobj 6 0 obj << /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 1000 1000 ] /Matrix [ 1 0 0 1 0 0 ] /Resources << /ProcSet [ /PDF ] /Font << /F1 4 0 R >> >> /Length 68 >> stream BT /F1 4 Tf 1 0 0 1 0 3 Tm (SharifCTF) Tj ET endstream endobj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set width to 2 % moveto 100 650 % lineto 100 620 % ... % .. 7 0 obj <</Length 283>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 620 m 140 620 l 120 615 m 120 595 l 120 590 m 140 590 l 160 650 m 180 650 l 180 645 m 180 625 l 160 620 m 180 620 l 180 615 m 180 595 l 160 590 m 180 590 l S endstream endobj 8 0 obj <</Length 318>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 9 0 obj <</Length 234>> stream 2 w 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 10 0 obj <</Length 257>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 11 0 obj <</Length 236>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 620 m 180 620 l 160 615 m 160 595 l 160 590 m 180 590 l S endstream endobj 12 0 obj <</Length 257>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 13 0 obj <</Length 318>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 14 0 obj <</Length 257>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 15 0 obj <</Length 318>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 16 0 obj <</Length 254>> stream 2 w 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l 160 615 m 160 595 l S endstream endobj 17 0 obj <</Length 194>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 180 615 m 180 595 l S endstream endobj 18 0 obj <</Length 215>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 620 m 180 620 l 180 645 m 180 625 l 160 645 m 160 625 l 180 615 m 180 595 l S endstream endobj 19 0 obj <</Length 194>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 180 615 m 180 595 l S endstream endobj 20 0 obj <</Length 237>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 21 0 obj <</Length 236>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 620 m 180 620 l 160 615 m 160 595 l 160 590 m 180 590 l S endstream endobj 22 0 obj <</Length 61>> stream 2 w 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 23 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 24 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 25 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 160 620 l 160 615 m 160 585 l S endstream endobj 26 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 27 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 160 620 l 160 615 m 160 585 l S endstream endobj 28 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 615 m 120 595 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 615 m 160 595 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 29 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 30 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 180 615 m 180 595 l S endstream endobj 31 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 32 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 160 620 l 160 615 m 160 585 l S endstream endobj 33 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 34 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 620 m 180 620 l 160 615 m 160 595 l 160 590 m 180 590 l S endstream endobj 35 0 obj <</Length 61>> stream 2 w 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l 160 615 m 160 595 l S endstream endobj 36 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 180 615 m 180 595 l S endstream endobj 37 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 140 645 m 140 625 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj 38 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 650 m 180 650 l 180 645 m 180 625 l 160 620 m 180 620 l 160 615 m 160 595 l 160 590 m 180 590 l S endstream endobj 39 0 obj <</Length 61>> stream 2 w 120 650 m 140 650 l 120 645 m 120 625 l 120 620 m 140 620 l 120 590 m 140 590 l 140 615 m 140 595 l 160 620 m 180 620 l 180 645 m 180 625 l 160 645 m 160 625 l 180 615 m 180 595 l S endstream endobj 40 0 obj <</Length 61>> stream 2 w 100 650 m 100 620 l 100 615 m 100 585 l 120 650 m 140 650 l 140 645 m 140 625 l 120 620 m 140 620 l 120 615 m 120 595 l 120 590 m 140 590 l 160 650 m 180 650 l 160 645 m 160 625 l 160 620 m 180 620 l 160 590 m 180 590 l 180 615 m 180 595 l S endstream endobj xref 0 40 0000000000 65535 f 0000000010 00000 n 0000000079 00000 n 0000000173 00000 n 0000000301 00000 n 0000000380 00000 n 0000000450 00000 n trailer << /Size 8 /Root 1 0 R >> startxref 600 %%EOF
というようなPDFが渡されます。みると、ぐるぐるの「SharifCTF」という文字があるPDFなんですが、objの7 0から40 0までが使われていないようだったので、27行目あたりの参照を変更してやると、数字が描画されました。
ということで、objの7 0から40 0までを描画するように適当にスクリプトを描いて、出てきた数値をascii表に従って変換してやるとFLAGがでました。 {d1242d2d0969741dde7ed79c3c409c46}
。
スクリプトはこんな感じです。
import os for i in range(7, 41): os.system("cp strange_pdf.pdf {}.pdf".format(i)) os.system(r"sed -i '27 s/\[[0-9]*/[{}/g' {}.pdf".format(i, i))
Scrack
バイナリが渡されるのでgdbで解析しようとするとなんか Don't follow me
ぽいことを言われるので objdump してやるとこんなフレーズが出てきて、
...snip... 400acb: 31 c0 xor eax,eax 400acd: 74 fa je 400ac9 <main+0x7c> 400acf: e8 0f b6 45 b0 call ffffffffb085c0e3 <_end+0xffffffffb0259e0b> 400ad4: 3c 38 cmp al,0x38 400ad6: 0f 85 bc 03 00 00 jne 400e98 <main+0x44b> 400adc: 0f b6 45 b1 movzx eax,BYTE PTR [rbp-0x4f] 400ae0: 3c 37 cmp al,0x37 400ae2: 0f 85 b0 03 00 00 jne 400e98 <main+0x44b> 400ae8: 0f b6 45 b2 movzx eax,BYTE PTR [rbp-0x4e] 400aec: 3c 34 cmp al,0x34 400aee: 0f 85 a4 03 00 00 jne 400e98 <main+0x44b> 400af4: 0f b6 45 b3 movzx eax,BYTE PTR [rbp-0x4d] 400af8: 3c 30 cmp al,0x30 400afa: 0f 85 98 03 00 00 jne 400e98 <main+0x44b> 400b00: 0f b6 45 b4 movzx eax,BYTE PTR [rbp-0x4c] 400b04: 3c 33 cmp al,0x33 400b06: 0f 85 8c 03 00 00 jne 400e98 <main+0x44b> 400b0c: 0f b6 45 b5 movzx eax,BYTE PTR [rbp-0x4b] 400b10: 3c 38 cmp al,0x38 400b12: 0f 85 80 03 00 00 jne 400e98 <main+0x44b> 400b18: 0f b6 45 b6 movzx eax,BYTE PTR [rbp-0x4a] 400b1c: 3c 65 cmp al,0x65 400b1e: 0f 85 74 03 00 00 jne 400e98 <main+0x44b> 400b24: 0f b6 45 b7 movzx eax,BYTE PTR [rbp-0x49] 400b28: 3c 34 cmp al,0x34 400b2a: 0f 85 68 03 00 00 jne 400e98 <main+0x44b> 400b30: 0f b6 45 b8 movzx eax,BYTE PTR [rbp-0x48] 400b34: 3c 62 cmp al,0x62 400b36: 0f 85 5c 03 00 00 jne 400e98 <main+0x44b> 400b3c: 0f b6 45 b9 movzx eax,BYTE PTR [rbp-0x47] 400b40: 3c 36 cmp al,0x36 400b42: 0f 85 50 03 00 00 jne 400e98 <main+0x44b> 400b48: 0f b6 45 ba movzx eax,BYTE PTR [rbp-0x46] 400b4c: 3c 65 cmp al,0x65 400b4e: 0f 85 44 03 00 00 jne 400e98 <main+0x44b> 400b54: 0f b6 45 bb movzx eax,BYTE PTR [rbp-0x45] 400b58: 3c 32 cmp al,0x32 400b5a: 0f 85 38 03 00 00 jne 400e98 <main+0x44b> 400b60: 0f b6 45 bc movzx eax,BYTE PTR [rbp-0x44] 400b64: 3c 39 cmp al,0x39 400b66: 0f 85 2c 03 00 00 jne 400e98 <main+0x44b> 400b6c: 0f b6 45 bd movzx eax,BYTE PTR [rbp-0x43] 400b70: 3c 62 cmp al,0x62 400b72: 0f 85 20 03 00 00 jne 400e98 <main+0x44b> 400b78: 0f b6 45 be movzx eax,BYTE PTR [rbp-0x42] 400b7c: 3c 66 cmp al,0x66 400b7e: 0f 85 14 03 00 00 jne 400e98 <main+0x44b> 400b84: 0f b6 45 bf movzx eax,BYTE PTR [rbp-0x41] 400b88: 3c 30 cmp al,0x30 400b8a: 0f 85 08 03 00 00 jne 400e98 <main+0x44b> 400b90: 0f b6 45 c0 movzx eax,BYTE PTR [rbp-0x40] 400b94: 3c 38 cmp al,0x38 400b96: 0f 85 fc 02 00 00 jne 400e98 <main+0x44b> 400b9c: 0f b6 45 c1 movzx eax,BYTE PTR [rbp-0x3f] 400ba0: 3c 39 cmp al,0x39 400ba2: 0f 85 f0 02 00 00 jne 400e98 <main+0x44b> 400ba8: 0f b6 45 c2 movzx eax,BYTE PTR [rbp-0x3e] 400bac: 3c 38 cmp al,0x38 400bae: 0f 85 e4 02 00 00 jne 400e98 <main+0x44b> 400bb4: 0f b6 45 c3 movzx eax,BYTE PTR [rbp-0x3d] 400bb8: 3c 62 cmp al,0x62 400bba: 0f 85 d8 02 00 00 jne 400e98 <main+0x44b> 400bc0: 0f b6 45 c4 movzx eax,BYTE PTR [rbp-0x3c] 400bc4: 3c 67 cmp al,0x67 400bc6: 0f 85 cc 02 00 00 jne 400e98 <main+0x44b> 400bcc: 0f b6 45 c5 movzx eax,BYTE PTR [rbp-0x3b] 400bd0: 3c 34 cmp al,0x34 400bd2: 0f 85 c0 02 00 00 jne 400e98 <main+0x44b> 400bd8: 0f b6 45 c6 movzx eax,BYTE PTR [rbp-0x3a] 400bdc: 3c 66 cmp al,0x66 400bde: 0f 85 b4 02 00 00 jne 400e98 <main+0x44b> 400be4: 0f b6 45 c7 movzx eax,BYTE PTR [rbp-0x39] 400be8: 3c 30 cmp al,0x30 400bea: 0f 85 a8 02 00 00 jne 400e98 <main+0x44b> 400bf0: 0f b6 45 c8 movzx eax,BYTE PTR [rbp-0x38] 400bf4: 3c 32 cmp al,0x32 400bf6: 0f 85 9c 02 00 00 jne 400e98 <main+0x44b> 400bfc: 0f b6 45 c9 movzx eax,BYTE PTR [rbp-0x37] 400c00: 3c 32 cmp al,0x32 400c02: 0f 85 90 02 00 00 jne 400e98 <main+0x44b> 400c08: 0f b6 45 ca movzx eax,BYTE PTR [rbp-0x36] 400c0c: 3c 35 cmp al,0x35 400c0e: 0f 85 84 02 00 00 jne 400e98 <main+0x44b> 400c14: 0f b6 45 cb movzx eax,BYTE PTR [rbp-0x35] 400c18: 3c 39 cmp al,0x39 400c1a: 0f 85 78 02 00 00 jne 400e98 <main+0x44b> 400c20: 0f b6 45 cc movzx eax,BYTE PTR [rbp-0x34] 400c24: 3c 33 cmp al,0x33 400c26: 0f 85 6c 02 00 00 jne 400e98 <main+0x44b> 400c2c: 0f b6 45 cd movzx eax,BYTE PTR [rbp-0x33] 400c30: 3c 35 cmp al,0x35 400c32: 0f 85 60 02 00 00 jne 400e98 <main+0x44b> 400c38: 0f b6 45 ce movzx eax,BYTE PTR [rbp-0x32] 400c3c: 3c 63 cmp al,0x63 400c3e: 0f 85 54 02 00 00 jne 400e98 <main+0x44b> 400c44: 0f b6 45 cf movzx eax,BYTE PTR [rbp-0x31] 400c48: 3c 30 cmp al,0x30 400c4a: 0f 85 48 02 00 00 jne 400e98 <main+0x44b> ...snip...
cmp
に指定されている文字を連結して文字列にしてやって、入力するとフラグが出ました。
SharifCTF{ed97d286f356dadb5cde0902006c7deb}
。
なんか簡単でよくわからないけど、SECCON Onlineの時よりはチームに貢献できたと思います。