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