RPS
Bill Elim & Jayson Adrian

Diberikan sebuah service game rock paper scissor sederhana

Mari kita lihat source codenya:





Terdapat cukup banyak komponen disini, mari kita lihat beberapa kode yang penting

Jadi berdasarkan return value dari play(), apabila kita menang maka wins kita akan bertambah,
apabila kalah maka wins nya akan di reset menjadi 0
Apabila wins kita >5, maka kita
akan mendapatkan flagnya.
Mari kita lihat fungsi play()


Memahami kode tgetinput cukup sulit, jadi kita asumsikan saja hanya fungsi input biasa yang bisa menghitung timeout

Pada kode ini, kita bisa melihat logika gamenya sendiri. Sebelumnya terdapat 2 array, hands dan loses

Jadi misalnya hasil dari computer_turn adalah 0, berarti computer akan memainkan hands[0] yaitu
rock, dan akan kalah oleh loses[0] yaitu paper, jadi kalau yang kita mainkan sama dengan
loses[0], maka kita akan menang.
Namun perhatikan baik-baik fungsi yang digunakan
untuk mengecek stringnya.

Ya, fungsi yang dipakai adalah strstr, berbeda dengan strcmp, strstr mencari substring dalam
sebuah teks.
Jadi misalnya computer memainkan rock, kalau kita menginput
“asdpaperasd”, maka kita masih tetap menang karena terdapat teks “paper” didalamnya.
Idenya
adalah dengan menginput “rockpaperscissors”, dengan begitu apapun pilihan computer, substring
lawannya masih tetap ada. Misalnya computer memainkan rock, maka terdapat string paper yang bisa
melawan, atau kalau computer memainkan scissors, maka terdapat string rock yang bisa melawan.

Flag: picoCTF{50M3_3X7R3M3_1UCK_58F0F41B}