kstm-su/ictsc9_final

[仮想遊戯開発局 仮想遊戯開発部] ぼよよんの実

bgpat opened this issue · 13 comments

bgpat commented
 満点: 450 / 通過チーム数: 0 / 依存: なし /
補足事項:
問題:

近年のゲーム市場拡大に感化され我が社でも仮想遊戯開発部が新設された。
新サービスに向けてオンラインゲームを試作し、制作環境での複数人対戦は仕様書通りの動作が確認されている。
しかし、ステージング環境ではなんらかの設定ミスにより動作に支障が生じた。
原因を調べ、仕様書通りに動作するようにしてほしい。
また、ゲームの仕様に脆弱性があれば合わせて報告してほしい。

追記
制約
ゲーム自体のソースコードの改変は禁止。

スタート
ゲーム開始後、ユーザ登録を行ってもmainシーンに遷移しない。

ゴール
仕様通りにゲームがプレイできる。
local portが枯渇する仕様やパフォーマンスを指摘できている。
スコアを無限に増やせる脆弱性等を指摘できている。

ゲームのダウンロード困難
slack、USBへ複製

https://files.slack.com/files-pri/T04BW7HGV-F9HTE4HEF/download/boyoyon_no_mi.pcapng

※フィルター
tcp.port == 8609 || udp.port == 8992 || tcp.port == 8610 || tcp.port == 8998

アクセスしたときのログ。
8609との3ハンズからのPSHから通信してる。
※8609 = FirstTCPServer 8609 TCP 名前登録, プレイヤー初期情報返答

Readme.txtにあるサーバーに入れない。

bgpat commented

他チームは入れたとか言ってたので質問したほうがいいかもしれない
やはりサーバー問のよう

Webサーバーにリモートログインできません。
SSHで
username:ubuntu
IPアドレス:27.133.128.225
pass:Y9nQ3Ff7
のログインを試みたところ、認証に失敗してしまいました。
認証の確認をお願いします。

と、質問しました。

【質問の解答】
バックのWebのパスは紙のパスになります。
【 C2zXybhu 】

root@team10:~# ss -intup
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
tcp    ESTAB      0      0      27.133.128.225:22                 103.202.216.17:61745               users:(("sshd",pid=22463,fd=3),("sshd",pid=22440,fd=3))
         cubic wscale:5,7 rto:216 rtt:14.288/0.912 ato:40 mss:1392 cwnd:10 bytes_acked:2873 bytes_received:2869 segs_out:17 segs_in:23 send 7.8Mbps lastsnd:5258640 lastrcv:5258676 lastack:5258624 pacing_rate 15.6Mbps rcv_rtt:20 rcv_space:28960
tcp    ESTAB      0      168    27.133.128.225:22                 103.202.216.17:46225               users:(("sshd",pid=22615,fd=3),("sshd",pid=22598,fd=3))
         cubic wscale:8,7 rto:264 rtt:62.429/4.468 ato:40 mss:1404 cwnd:10 bytes_acked:6873 bytes_received:3582 segs_out:73 segs_in:103 send 1.8Mbps lastrcv:8 lastack:8 pacing_rate 3.6Mbps unacked:2 retrans:0/1 rcv_space:29200
tcp    ESTAB      0      0      127.0.0.1:6379               127.0.0.1:32768               users:(("redis-server",pid=8141,fd=6))
         cubic wscale:7,7 rto:204 rtt:0.038/0.007 ato:40 mss:21888 cwnd:10 bytes_acked:136973 bytes_received:719105 segs_out:34244 segs_in:68488 send 46080.0Mbps lastsnd:3320 lastrcv:3320 lastack:3320 rcv_rtt:419437 rcv_space:43724
tcp    ESTAB      0      0      127.0.0.1:32768              127.0.0.1:6379                users:(("python3",pid=7819,fd=10))
         cubic wscale:7,7 rto:204 rtt:0.186/0.026 ato:40 mss:21888 cwnd:10 bytes_acked:719106 bytes_received:136973 segs_out:68488 segs_in:34245 send 9414.2Mbps lastsnd:3320 lastrcv:3320 lastack:3320 pacing_rate 18740.2Mbps rcv_rtt:14282 rcv_space:43785
tcp    ESTAB      0      0      27.133.128.225:22                 103.202.216.17:49144               users:(("sshd",pid=22535,fd=3),("sshd",pid=22516,fd=3))
         cubic wscale:8,7 rto:260 rtt:56.546/7.741 ato:40 mss:1404 cwnd:10 bytes_acked:15137 bytes_received:4270 segs_out:120 segs_in:153 send 2.0Mbps lastsnd:4049148 lastrcv:3927916 lastack:3988896 pacing_rate 4.0Mbps rcv_space:29200

listen ポート・プロセス

root@team10:~# ss -ltnp
State       Recv-Q Send-Q    Local Address:Port                   Peer Address:Port
LISTEN      0      5                     *:8609                              *:*                   users:(("python3",pid=7819,fd=8))
LISTEN      0      5                     *:9090                              *:*                   users:(("python3",pid=7819,fd=6))
LISTEN      0      5                     *:8610                              *:*                   users:(("python3",pid=7819,fd=5))
LISTEN      0      5                     *:8998                              *:*                   users:(("python3",pid=7819,fd=7))
LISTEN      0      128           127.0.0.1:6379                              *:*                   users:(("redis-server",pid=8141,fd=4))
LISTEN      0      128                   *:22                                *:*                   users:(("sshd",pid=788,fd=3))
LISTEN      0      128                  :::22                               :::*                   users:(("sshd",pid=788,fd=4))
root@team10:~# ps aux |grep 7819
root      7819  0.0  0.4 585420 18628 ?        Ssl  Feb28   1:58 /usr/bin/python3 /home/ubuntu/src/main.py

/usr/bin/python3 /home/ubuntu/src/main.py ここ見てみます

main.pyのデータ

from external.data_manager import main as dm_main
from external.score_calculator import main as sc_main
from server.damage_tcp import DamageServer # :8610
from server.gameover_tcp import GameOverServer # :9090
from server.ranking_tcp import RankingServer # :8998
from external.data_manager import main as dm_main
from external.data_manager import main as dm_main
from external.score_calculator import main as sc_main
from server.damage_tcp import DamageServer # :8610
from server.gameover_tcp import GameOverServer # :9090
from server.ranking_tcp import RankingServer # :8998
from server.start_tcp import StartingServer # :8609
from server.sync_udp import GameServer # :8992/udp

import threading
import socketserver


ts = list()

# data_manager
t = threading.Thread(target=dm_main)
ts.append(t)
t.start()

# score_calculator
t = threading.Thread(target=sc_main)
ts.append(t)
t.start()



socketserver.ThreadingTCPServer.allow_reuse_address = True

# tcp server
for port, server in [[8610, DamageServer], [9090, GameOverServer], [8998, RankingServer], [8609, StartingServer]]:
    ss = socketserver.ThreadingTCPServer(('0.0.0.0', port), server)
    t = threading.Thread(target=ss.serve_forever)
    ts.append(t)
    t.start()

# udp server
ss = socketserver.ThreadingUDPServer(('0.0.0.0', 8992), GameServer)
t = threading.Thread(target=ss.serve_forever)
ts.append(t)
t.start()

try:
    for t in ts:
        t.join()
except KeyboardInterrupt:
    print('Got Ctrl-C')
    for t in ts:
        t._stop()

現状整理:
名前入力してもメイン画面に進まない。(禁止文字「:」入力すると警告がちゃんと出る。)
wire...見たがユーザーデータをクライアントは送信していたが、向こうからの初期データ等が届かなかった。(3ハンズは成功し、応答はある)
そのため、1番目のサーバーに、こちらに送る際にデータ乗せてない可能性がある。
上記ファイルはうまく読めないが、それが原因か、それの送り先の出口が原因かと。