Pwnable.kr/memcpy
t6o_o6t.icon
ホストの9092番にncサーバが立っているようだ
$ nc 0 9092
手元でコンパイルして動かした感じだと、ただ指示に従って入力していけばフラグが表示されるような...?
まだソースコードはほぼ読んでいない
実際にリモートで実行してみると、
fastのほうがslowより性能が低いときに終了する?と考えたが、そのようなことは無かった
code:fast_is_bad
experiment 2 : memcpy with buffer size 16
ellapsed CPU cycles for slow_memcpy : 454
ellapsed CPU cycles for fast_memcpy : 496
memcpyユーザでのSSHセッション上で、指示の通りにmemcpy.cをコンパイルしてみた
code:segmentation_falult
write(1, "ellapsed CPU cycles for slow_mem"..., 42ellapsed CPU cycles for slow_memcpy : 932
) = 42
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
pwnable.krのリモートマシンではgdbが使えるので、どの命令が原因でSegmentation faultするのかを確かめてみたい
fast_memcpy+33から+63までがインラインアセンブリで書かれた命令である
gdb上でrunしようとすると、すぐにSegmentation Faultが起こり、そもそも実行できない
止まっている箇所は..
code:gdb_sigsegv
0x08048829 <+29>: xor eax,eax
=> 0x0804882b <+31>: mov eax,ds:0x804b064
eaxに