SCIST Python CTF - Writeup

SCIST Python CTF - Writeup

PPC

Department store anniversary 100

題目要求進行100次買二送一的挑戰。將商品價格排序後,為了讓免費商品價值最大,我們應該總是選擇清單中價格最高的商品來付費,並讓緊隨其後價格第三高的商品作為免費回饋。

from pwn import *

HOST = "210.70.138.221"
PORT = 10007

r = remote(HOST, PORT)

for i in range(100):
r.recvuntil(b'----- wave ' + str(i+1).encode() + b'/100 -----\n')
text = r.recvline().decode().strip()
num_str = text.split(':', 1)[1].strip()
nums = list(map(int, num_str.split()))
nums.sort(reverse=True)
s = sum([nums[j] for j in range(2, len(nums), 3)])
print(f"[+] Wave {i+1}/100: Answer = {s}")
r.sendlineafter(b'answer : ', str(s).encode())

print(r.recvall().decode('utf-8'))

r.close()

執行腳本後,程式會自動完成 100 次挑戰,最終回傳包含 Flag 的訊息。

hsctf{You_got_the_highest_reward!}