449afc1bf0232367b2fc02594f17b3169f2cbf13
ctf/IERAE CTF 2024 writeup.md
... | ... | @@ -193,7 +193,7 @@ from predict_secret import predict_secret |
193 | 193 | if __name__ == '__main__': |
194 | 194 | process = subprocess.Popen( |
195 | 195 | # ['python3', '../challenge.py'], |
196 | - ['nc', '35.201.137.32', '19937'], |
|
196 | + ['nc', '192.0.2.1', '19937'], |
|
197 | 197 | stdin=subprocess.PIPE, |
198 | 198 | stdout=subprocess.PIPE, |
199 | 199 | stderr=subprocess.PIPE, |
... | ... | @@ -418,7 +418,7 @@ pwnは初挑戦! |
418 | 418 | gdbで変数の中身を覗くくらいはやったことがあったのだが、gdbだけでは難しいようで、`gdb-peda`というラッパーツールを使う。 |
419 | 419 | stackの中身を表示しながらデバッグできる。 |
420 | 420 | |
421 | -gdb-pedaの出力から`win`関数へのアドレスは(多分)分かった。 |
|
421 | +gdb-pedaの出力から`win`関数へのアドレスは(恐らく)分かった。 |
|
422 | 422 | どこかに不正な入力を入れ、バッファオーバーフローを起こし、stackのリターンアドレスを書き換えようとした。 |
423 | 423 | |
424 | 424 | ```c |
... | ... | @@ -436,8 +436,8 @@ if (nrow * ncol < nrow) { // this is integer overflow right? |
436 | 436 | } |
437 | 437 | ``` |
438 | 438 | |
439 | - |
|
440 | 439 | このチェックは、nrowを0とすればncolがどんな値でも通過できると思ったのだが、そうすると |
440 | + |
|
441 | 441 | ```c |
442 | 442 | for (unsigned long long int i=0; i<nrow; i++) { |
443 | 443 | for (unsigned long long int j=0; j<ncol; j++) { |
... | ... | @@ -447,3 +447,4 @@ for (unsigned long long int i=0; i<nrow; i++) { |
447 | 447 | ``` |
448 | 448 | のループが実行できず、SEGVは起こせないことに気が付いた。 |
449 | 449 | |
450 | +その後はstackの値を見ながら、scanfに入れる文字列を試していたのだがバッファオーバーフローしないのでギブアップ。 |
|
... | ... | \ No newline at end of file |