18 |
19 |
20 |
21 |
22 | ## مسابقه CTF نوروز ۱۴۰۴؛ اولین تجربه، یک خاطره بهیادماندنی
23 |
24 | برای اولین بار مسابقه بین المللی CTF تیم فلگ موتوری در اواخر اسفند ۱۴۰۳ برگزار شد؛ رویدادی که با نام NOWRUZ 1404 به استقبال سال جدید رفتیم! این مسابقه با هدف به چالش کشیدن مهارتها و حل چالش های امنیتی در فضایی دوستانه و هیجانانگیز برگزار شد.
25 |
26 | از لحظهی شروع تا پایان، شاهد رقابت بین تیمهای شرکتکننده بودیم. چالشهای متنوعی که توسط اعضای تیم طراحی شده بود، توانست شرکتکنندگان را درگیر کنند. خوشبختانه مسابقه بدون مشکل جدی برگزار شد و از بازخوردهای مثبت شرکتکنندگان انرژی زیادی گرفتیم.
27 | در نهایت، تیمهای
28 |
29 | :flag_gr: Thread in the Needle :first_place_medal:
30 |
31 | :flag_id: HCS :second_place_medal:
32 |
33 | :flag_kr: TeamH4C :third_place_medal:
34 |
35 | مقامهای اول تا سوم را از آن خود کردند. تبریک ویژه به این تیمها برای عملکردشان!
36 |
37 | یک تشکر بزرگ از تمامی بچههای تیم که با طراحی چالشها و راهاندازی زیرساختها، باعث شدند این رویداد به بهترین شکل ممکن برگزار شود. در واقع بدون شما این مسابقه امکانپذیر نبود :shaking_hands:
38 |
39 | این تجربه برای ما ارزشمند بود و قطعاً در مسابقات آینده اندک نقاط ضعف را برطرف خواهیم کرد و با ایده های جدید، تجربهای بهتر برای همه رقم بزنیم. برای بررسی چالشها، شناخت طراحان و راهحل چالشها ، میتوانید به [این لینک](https://github.com/FlagMotori/Nowruz1404) مراجعه کنید.
40 |
41 | منتظر دورههای بعدی باشید! 🚀🎯
42 |
43 |
20 |
21 |
22 | ## انواع چالش رمزنگاری در CTF
23 |
24 | الگوریتمها و طرحهای رمزنگاری دارای انواع مختلفی هستند. ما در این جا فارغ از نوع و کاربرد آنها، تنها چالشهای رمزنگاری در مسابقات CTF را به دو دسته کلی تقسیم میکنیم:
25 |
26 | ### ۱- مبتنی بر مفاهیم ریاضی
27 |
28 | این چالشها صرفا به مفاهیم پایهای ریاضی متمرکز هستند و نیاز به حل یک مسئله ریاضی برای آن چالش رمزنگاری دارند. برای بدست آوردن پرچم در این نوع چالشها، شما نیاز به داشتن دانش کافی در مباحث ریاضیات رمزنگاری مانند محاسبات پیمانهای، لگاریتمهای گسسته، معادلات چندجملهای، منحنیهای بیضوی و ریاضیات مشبکه (Lattice) دارید.
29 |
30 | ### ۲- مبتنی بر خطای پیادهسازی
31 |
32 | برخی اوقات نفوذها و شکستن رمزنگاریهای موجود در یک سامانه به دلیل نقص در خود الگوریتم رمزنگاری نیست بلکه عدم تجربه کافی در بکارگیری درست این الگوریتمها، سبب ایجاد آسیبپذیری در یک سامانه مبتنی بر رمزنگاری میشود. بنابراین در این نوع چالشها، نیاز به دانش عمیق در مورد آن رمزنگاری نیست و تنها کافی است که نقص پیاده سازی را کشف و از آن برای دور زدن رمزنگاری استفاده کنیم.
33 |
34 | اگرچه چالشهای رمزنگاری شاید بخاطر روابط ریاضی پشت آن دشوار بنظر برسد، اما نباید از حل این چالشها دلسرد شد زیرا این چالشها تنها به مباحث ریاضی نمیپردازد. در این بخش ما سعی کردیم روی چالشهای حوزه رمزنگاری CTFها متمرکز شویم و منابع مختلف برای شروع و یادگیری رمزنگاری را معرفی کنیم. همچنین ابزارها و سایتهای مفیدی که به حل چالشهای رمزنگاری کمک میکنند را معرفی خواهیم کرد. علاوه بر اینها، رایتاپ برخی از چالشهایی را که در مسابقات مختلف شرکت میکنیم را منتشر خواهیم کرد تا افراد علاقهمند به پیشرفت در رمزنگاری کمک کند.
35 |
36 | ---
--------------------------------------------------------------------------------
/docs/crypto/source/Cryptography-And-Network-Security_Forouzan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/source/Cryptography-And-Network-Security_Forouzan.jpg
--------------------------------------------------------------------------------
/docs/crypto/source/Introduction-to-Mathematical-Cryptography_Hoffstein.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/source/Introduction-to-Mathematical-Cryptography_Hoffstein.jpg
--------------------------------------------------------------------------------
/docs/crypto/source/Secret History The Story of Cryptology.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/source/Secret History The Story of Cryptology.png
--------------------------------------------------------------------------------
/docs/crypto/source/index.md:
--------------------------------------------------------------------------------
1 | # منابع یادگیری رمزنگاری
2 |
3 | راستش تا دلتون بخواد ما کتاب و ویدئو آموزشی داریم که فقط با یک جستجو ساده توی اینترنت میتونید پیدا کنید. ولی خب یکسری منابع هستن که خیلی معروف و خودمون استفاده کردیم و گفتیم چقدر خوب میشه با شما به اشتراک بزاریم :)
4 |
5 | ## پلتفرم یادگیری و حل چالشها
6 | - #### CryptoHack
7 | - #### Cryptopals
8 | - #### RootMe
9 | ## ویدئوهای آموزشی
10 | - #### Neso Academy
11 |
12 | ---
13 |
14 | ## معرفی کتاب
15 | - ### An Introduction to Mathematical Cryptography by Jeffrey Hoffstein
16 |
17 |
18 | این کتاب یکی از کتابهای پرطرفدار و بسیار توصیه شده در جامعه رمزنگاری است. دلیل آن این است که مفاهیم پیچیده و عمیق ریاضی رمزنگاری را به زبان ساده و همراه با مثال و تمرین بیان میکند تا درک مطلب خواننده را افزایش دهد.
19 | این کتاب عمدتاً بر روی سیستمهای رمزنگاری کلید عمومی و امضای دیجیتال و همچنین ریاضیات آنها تمرکز میکند. خوانندهای که بر مطالب این کتاب تسلط داشته باشد، نه تنها برای مطالعه بیشتر در رمزنگاری به خوبی آماده میشود، بلکه به درک عمیق اصول ریاضی که رمزنگاری مدرن بر آن استوار است دست خواهد یافت و میتواند به حل چالشهای CTF مبتنی بر مفاهیم ریاضی کمک شایانی کند.
20 |
21 | ---
22 | - ### Cryptography and Network Security by Behrouz Forouzan
23 |
24 | این کتاب از یک رویکرد قدم به قدم برای آموزش رمزنگاری و امنیت شبکه استفاده میکند. شما در ابتدای کار به هیچ دانش ریاضی خاصی مانند نظریه اعداد یا ... نیاز ندارید چرا که در طول مطالعه کتاب اون رو بدست میارید، از آنجایی که رمزنگاری و امنیت شبکه را نمیتوان بدون پیشینه در زمینه ریاضیات مورد بحث قرار داد، این موضوعات در فصلهای ۲، ۴ و ۹ مورد بحث قرار میگیرند. خوانندگانی که با این حوزههای ریاضیات آشنا هستند میتوانند این فصلها را نادیده بگیرند. فصل ۱ تا ۱۵ رمزنگاری را مورد بحث قرار میدهد. در ضمن فصلهای ۱۶ تا ۱۸ امنیت شبکه مورد بحث قرار میگیرد.
25 |
26 | ---
27 | - ### Secret History: The Story of Cryptology by Craig P. Bauer
28 |
29 | این کتاب به سبک سرگرم کننده نوشته شده که در آن داستان پیدایش و تحول علم رمزنگاری را در گذر زمان بررسی میکند. میتوانیم آن را برای مطالعه در اوقات فراغت برای کسی که علاقهمند به دانش بیشتر در مورد تاریخچه علم رمزنگاری است توصیه کنیم. این کتاب سیر تاریخی پیدایش انواع روشهای رمزنگاری از زمان یونان باستان، قرون وسطا تا رمزنگاریهای مدرن امروزی و حتی رمزنگاریهای پساکوانتمی آینده را بررسی میکند. کتاب زیاد به مسائل پیچیده ریاضی نمیپردازد و با بیانی ساده و آوردن مثالهایی از رمزنگاریهای هر دوره و روش شکستن آنها خواننده ناآشنا به این علم را با آن آشنا میکند. گاهی در مسابقات CTF سوالاتی از رمزنگاریهای گذشته مطرح میشود که این کتاب میتواند به حل آنها کمک کند.
30 |
31 | !!! نویسنده
32 | [تیم فلگ موتوری](https://github.com/flagmotori)
33 |
34 |
--------------------------------------------------------------------------------
/docs/crypto/wiki/CRT/chinese-remainder-theorem.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - Chinese Remainder Theorem
5 | - CRT
6 | ---
7 |
8 | ## قضیه Chinese Remainder
9 |
10 | قضیه Chinese Remainder نشان میدهد که اگر یک دستگاه همنشتی خطی به فرم $x\equiv a \pmod{m}$ با این شرط که پیمانه ها دو به دو نسبت به اول باشند آنگاه یک پاسخ منحصر به فرد مانند $x$ به پیمانه ضرب پیمانه های معادلات وجود دارد.
11 | این قضیه به ویژه در حل سیستم های معادلات پیمانه ای همزمان که حل آنها به صورت جداگانه دشوار یا غیرممکن است مفید است. برای مثال، اگر دو رابطه همنهشتی داشته باشیم:
12 |
13 | $$x \equiv 3 \pmod{4}$$
14 |
15 | $$x \equiv 2 \pmod{5}$$
16 |
17 | با استفاده از CRT میتوانیم یک جواب منحصر به فرد مانند $x$ به پیمانه 20 که هر دو رابطه همنهشتی را ارضا میکند بیابیم.
18 |
19 |
20 | این قضیه کاربردهای زیادی در رمزنگاری، نظریه اعداد و علوم کامپیوتر دارد. به عنوان مثال، در رمزگذاری RSA برای سرعت بخشیدن به محاسبه معکوس پیمانه ای و در ساخت سیستم های رمزنگاری کلید عمومی بر اساس فاکتورگیری اعداد صحیح استفاده می شود.
21 |
22 | ## الگوریتم
23 |
24 | ما به دو متغیر نیاز داریم:
25 |
26 | $$N = n_1 \cdot n_1 \cdot ... \cdot n_i$$
27 |
28 | $$E = \left[ \frac{N}{n_1}, \frac{N}{n_2}, ..., \frac{N}{n_i} \right]$$
29 |
30 | برای هر عضو از $E$ باید معکوس به پیمانه $n_i$ مانند $y$ محاسبه شود یعنی:
31 |
32 | $$E_i \cdot y \equiv 1 \pmod{n_i}$$
33 |
34 | و یک جواب ما به این صورت خواهد بود که:
35 |
36 | $$x = a_1 \cdot E_1 \cdot y_1 + a_2 \cdot E_2 \cdot y_2 + ... + a_i \cdot E_i \cdot y_i$$
37 |
38 | و جواب منحصر به فرد ما $x \equiv 0 \pmod{N}$ خواهد بود.
39 |
40 |
41 | ## پیاده سازی
42 |
43 | ```py linenums="1" title="example.sage"
44 | b_list = [2, 3, 10]
45 | n_list = [5, 7, 11]
46 | x = CRT(b_list, n_list)
47 | # x = 87
48 | ```
49 |
50 | ---
51 |
52 | !!! نویسنده
53 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/dhke/dhke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/wiki/dhke/dhke.png
--------------------------------------------------------------------------------
/docs/crypto/wiki/dhke/diffie-hellman-key-exchange.md:
--------------------------------------------------------------------------------
1 | ---
2 | txgK:
3 | - Crypto
4 | - Diffie Hellmxn
5 | - Diffie Hellmxn Key Exchxnge
6 | - Modulxr xrithmetic
7 | ---
8 |
9 | ## تبادل کلید دیفی-هلمن
10 |
11 | تبادل کلید **دیفی-هلمن (Diffie-Hellmxn Key Exchxnge)** یک روش رمزنگاری است که به دو طرف اجازه میدهد تا یک کلید مشترک را از طریق یک کانال ناامن به اشتراک بگذارند. این کلید مشترک سپس میتواند برای رمزنگاری و ارتباط امن بین طرفین استفاده شود. تبادل کلید دیفی-هلمن پایه بسیاری از پروتکلهای ارتباطی امن است، مانند **SSL/TLS** که برای ایمنسازی ترافیک اینترنت استفاده میشود.
12 |
13 |
14 | ### مفاهیم کلیدی
15 |
16 | - **تبادل کلید نامتقارن**: دیفی-هلمن خود یک مکانیزم رمزنگاری نیست، بلکه روشی برای تولید یک کلید مشترک با استفاده از رمزنگاری نامتقارن است. این روش به دو طرف اجازه میدهد بدون نیاز به ارسال مستقیم کلید از طریق کانال ارتباطی، یک کلید مشترک ایجاد کنند.
17 |
18 | - **پارامترهای عمومی**:
19 | - یک **عدد اول** \( p \) و یک **پایه (یا مولد)** \( g \) انتخاب میشوند. این مقادیر میتوانند به صورت عمومی به اشتراک گذاشته شوند بدون اینکه امنیت کاهش یابد.
20 |
21 | - **فرایند تبادل کلید**:
22 |
23 | 
24 |
25 | - **مرحله ۱**: هر طرف یک کلید خصوصی تولید میکند. فرض کنیم کلید خصوصی آلیس \( x \) و کلید خصوصی باب \( y \) باشد.
26 | - **مرحله ۲**: آلیس کلید عمومی خود را به صورت \( R_1 = g^x \pmod{p} \) محاسبه میکند و باب نیز کلید عمومی خود را به صورت \( R_2 = g^y \pmod{p} \) محاسبه میکند.
27 | - **مرحله ۳**: آلیس کلید عمومی \( R_1 \) را به باب ارسال میکند و باب نیز کلید عمومی \( R_2 \) را به آلیس میفرستد.
28 | - **مرحله ۴**: هر دو طرف کلید مشترک را با تواندهی به کلید عمومی طرف دیگر محاسبه میکنند:
29 | - آلیس کلید مشترک را به صورت \( K = R_2^x \pmod{p} \) محاسبه میکند.
30 | - باب کلید مشترک را به صورت \( K = R_1^y \pmod{p} \) محاسبه میکند.
31 |
32 | از آنجا که \( K = (g^y)^x \pmod{p} = (g^x)^y \pmod{p} \)، هر دو طرف اکنون یک مقدار مشترک \( K \) دارند که میتواند به عنوان کلید برای رمزنگاری متقارن استفاده شود.
33 |
34 | ### مثال
35 |
36 | فرض کنیم \( p = 23 \) (یک عدد اول) و \( g = 5 \):
37 |
38 | - **مرحله ۱**: آلیس \( x = 6 \) (کلید خصوصی) و باب \( y = 15 \) (کلید خصوصی) را انتخاب میکنند.
39 | - **مرحله ۲**: آلیس \( R_1 = 5^6 \pmod{23} = 8 \) را محاسبه میکند و باب \( R_2 = 5^{15} \pmod{23} = 19 \) را محاسبه میکند.
40 | - **مرحله ۳**: آلیس و باب کلیدهای عمومی خود را مبادله میکنند: \( R_1 = 8 \) و \( R_2 = 19 \).
41 | - **مرحله ۴**: آلیس \( K = 19^6 \pmod{23} = 2 \) و باب \( K = 8^{15} \pmod{23} = 2 \) را محاسبه میکنند.
42 |
43 | اکنون آلیس و باب هر دو یک کلید مشترک \( K = 2 \) دارند.
44 |
45 | ### امنیت
46 | - امنیت دیفی-هلمن به دشواری حل **مسئله لگاریتم گسسته** وابسته است که با اعداد اول بزرگ و مولدهای مناسب، به راحتی محاسبه نمیشود.
47 | - این روش در برابر حملات **mxn-in-middle** آسیبپذیر است، مگر اینکه مکانیزمهای احراز هویت در کنار آن استفاده شوند.
48 |
49 | ---
50 |
51 | !!! نویسنده
52 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/euclidean-algorithm/euclidean-algorithm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/wiki/euclidean-algorithm/euclidean-algorithm.png
--------------------------------------------------------------------------------
/docs/crypto/wiki/euclidean-algorithm/xeuclidean-algorithm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/wiki/euclidean-algorithm/xeuclidean-algorithm.png
--------------------------------------------------------------------------------
/docs/crypto/wiki/fermat-little-theorem/fermat-little-theorem.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - Fermat's little Theorem
5 | - Modular arithmetic
6 | ---
7 |
8 | ## قضیه Fermat's little
9 |
10 | ???+ note "قضیه Fermat's little"
11 |
12 | در نظریه اعداد این قضیه نشان میدهد که اگر $p$ عددی اول باشد آنگاه برای هر عدد صحیح $a$ عدد $a^{p} - a$ یک عدد صحیح مضربی از $p$ هست. اگر بخواهیم به صورت حساب پیمانه ای نمایش بدهیم داریم:
13 |
14 | $$
15 | a^{p}\equiv a \pmod{p}
16 | $$
17 |
18 | ## مثال
19 |
20 | برای مثال اگر $a=2$ و $p=7$ آنگاه
21 |
22 | $$2^{7} - 2\equiv 126 \equiv 7 \times 18 \equiv 0 \pmod{7}$$
23 |
24 | ???+ tip "نکته مهم"
25 |
26 | در حالتی که $p$ و $a$ نسبت به اول باشند این قضیه معادل است با :
27 |
28 | $$
29 | a^{p-1}\equiv 1 \pmod{p}
30 | $$
31 |
32 | برای مثال اگر $a=2$ و $p=7$ آنگاه
33 |
34 | $$2^{6} \equiv 64 \equiv 7 \times 9 + 1 \equiv 1 \pmod{7}$$
35 |
36 | ---
37 |
38 | !!! نویسنده
39 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/modular-binomials/modular-binomials.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - modular binomials
5 | - Modular arithmetic
6 | ---
7 |
8 | ## دو جمله ای پیمانه ای
9 |
10 | دو جمله ای پیمانه ای یک مسئله ریاضی است که در آن یک عبارت دو جمله ای از شکل:
11 |
12 | $$ x \equiv (a+b)^e \pmod{N} $$
13 |
14 | که $a$ و $b$ اعداد صحیح و عدد صحیح مثبت $e$ به عنوان نما و عدد صحیح مثبت $N$ به عنوان پیمانه میباشد.
15 |
16 |
17 | ## جستجو p و q
18 |
19 | مسئله دو جمله ای پیمانه ای می تواند به شکل زیر باشد:
20 |
21 | $$ c_1 \equiv (a_1 \cdot p + b_1 \cdot q )^{e_1} \pmod{N} $$
22 |
23 | $$ c_2 \equiv (a_2 \cdot p + b_2 \cdot q )^{e_2} \pmod{N} $$
24 |
25 | که $c_1$ , $c_2$ , $a_1$, $a_2$, $b_1$, $b_2$, $e_1$, $e_2$, $N$ داده شده و $N=p \times q$ و هدف یافتن $p$ و $q$ است.
26 |
27 | در ابتدا میایم و $c_1$ رو به توان $e_2$ میرسونیم:
28 |
29 | $$
30 | {c_1}^{e_2} \equiv (a_1 \cdot p + b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
31 | $$
32 |
33 | از طرفی با توجه به قضیه دو جمله ای داریم:
34 |
35 | $$
36 | {c_1}^{e_2} \equiv (a_1 \cdot p)^{e_1 \cdot e_2} + (b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
37 | $$
38 |
39 | حالا میایم و دو طرف رو در ${a_1}^{-e_1 \cdot e_2}$ ضرب میکنیم پس داریم:
40 |
41 | $$
42 | {a_1}^{-e_1\cdot e_2} \cdot {c_1}^{e_2} \equiv {a_1}^{-e_1\cdot e_2} \cdot (a_1 \cdot p)^{e_1 \cdot e_2} + {a_1}^{-e_1\cdot e_2} \cdot (b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
43 | $$
44 |
45 | با اندکی ساده سازی:
46 |
47 | \begin{equation}
48 | {a_1}^{-e_1\cdot e_2} \cdot {c_1}^{e_2} \equiv p^{e_1 \cdot e_2} + {a_1}^{-e_1\cdot e_2} \cdot (b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
49 | \label{eq:1}
50 | \end{equation}
51 |
52 | و همه مراحل گفته شده را این بار برای $c_2$ تکرار میکنیم در نهایت:
53 |
54 | \begin{equation}
55 | {a_2}^{-e_1\cdot e_2} \cdot {c_2}^{e_1} \equiv p^{e_1 \cdot e_2} + {a_2}^{-e_1\cdot e_2} \cdot (b_2 \cdot q )^{e_1 \cdot e_2} \pmod{N}
56 | \label{eq:2}
57 | \end{equation}
58 |
59 | سپس نتیجه بدست آمده در $\ref{eq:1}$ را از $\ref{eq:2}$ کم میکنیم:
60 |
61 | \begin{equation}
62 | {a_2}^{-e_1\cdot e_2} \cdot {c_2}^{e_1} - {a_1}^{-e_1\cdot e_2} \cdot {c_1}^{e_2}
63 | \label{eq:3}
64 | \end{equation}
65 |
66 | $$
67 | \equiv p^{e_1 \cdot e_2} + {a_2}^{-e_1\cdot e_2} \cdot (b_2 \cdot q )^{e_1 \cdot e_2} - p^{e_1 \cdot e_2} + {a_1}^{-e_1\cdot e_2} \cdot (b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
68 | $$
69 |
70 | $$
71 | \equiv {a_2}^{-e_1\cdot e_2} \cdot (b_2 \cdot q )^{e_1 \cdot e_2} + {a_1}^{-e_1\cdot e_2} \cdot (b_1 \cdot q )^{e_1 \cdot e_2} \pmod{N}
72 | $$
73 |
74 | بنابراین $q$ برابر خواهد بود با:
75 |
76 | $$
77 | q = \text{GCD}({a_2}^{-e_1\cdot e_2} \cdot {c_2}^{e_1} - {a_1}^{-e_1\cdot e_2} \cdot {c_1}^{e_2}, N)
78 | $$
79 |
80 | و همین کار را برای بدست آوردن $p$ تکرار میکنیم که به عنوان تمرین به خواننده واگذار می شود.
81 |
82 | ## مثال
83 |
84 | !!! example ""
85 |
86 | برای تمرین بیشتر به شما پیشنهاد می شود رایتاپ مربوط به چالش RSA-GCD در مسابقه 0xL4ughCTF را مطالعه کنید.
87 |
88 | ---
89 |
90 | !!! نویسنده
91 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/quadratic-residues/quadratic-residues.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - quadratic residue
5 | - legendre symbol
6 | ---
7 |
8 | ## باقی مانده درجه دوم
9 |
10 | در نظریه اعداد عدد صحیح $q$ باقی مانده درجه دوم یا quadratic residue می گوییم اگر عدد صحیح مانند $x$ وجود داشته باشد به طوری که:
11 |
12 | $$
13 | x^{2}\equiv q \pmod{n}
14 | $$
15 |
16 | در غیر اینصورت آن را غیر باقی مانده درجه دوم یا quadratic non-residue میخوانیم.
17 |
18 | ## خواص
19 |
20 | - **پیمانه اول: اگر** $p$ یک پیمانه فرد اول باشد آنگاه دقیقا $\frac{p+1}{2}$ باقی مانده درجه دوم به پیمانه $p$ وجود دارد.
21 |
22 | - **نماد Legendre**: نماد Legendre یا ($\frac{a}{p}$) برای مشخص کردن این که آیا عدد $a$ یک باقیمانده درجه دوم به پیمانه $p$ هست یا خیر به کار می رود. اگر $a$ یک باقیمانده درجه دوم به پیمانه $p$ باشد آنگاه $\frac{a}{p} = 1$ می باشد در غیر این صورت برابر $\frac{a}{p} = -1$ می باشد و اگر $a\equiv 0 \pmod{p}$ بود آنگاه $\frac{a}{p} = 0$ می باشد.
23 |
24 | - **خواصی دیگر:**
25 |
26 | ```
27 | Quadratic Residue * Quadratic Residue = Quadratic Residue
28 | Quadratic Residue * Quadratic Non-residue = Quadratic Non-residue
29 | Quadratic Non-residue * Quadratic Non-residue = Quadratic Residue
30 | ```
31 |
32 | ## مثال
33 |
34 | در نظر بگیرید $n=7$. اعداد صحیح $0,1,2,3,4,5,6$ همگی تمامی باقیمانده ممکن برای تقسیم بر 7 هستند.
35 | حالا بیاید و بررسی کنیم کدامین از اینها باقی مانده درجه دوم هستند:
36 |
37 | $$0^{2} \equiv 0 \equiv 0 \pmod{7}$$
38 |
39 | $$1^{2} \equiv 1 \equiv 1 \pmod{7}$$
40 |
41 | $$2^{2} \equiv 4 \equiv 4 \pmod{7}$$
42 |
43 | $$3^{2} \equiv 9 \equiv 2 \pmod{7}$$
44 |
45 | $$4^{2} \equiv 16 \equiv 2 \pmod{7}$$
46 |
47 | $$5^{2} \equiv 25 \equiv 4 \pmod{7}$$
48 |
49 | $$6^{2} \equiv 36 \equiv 1 \pmod{7}$$
50 |
51 | بنابراین باقی مانده درجه دوم به پیمانه 7 اعداد 0,1,2 و 4 هستند.
52 |
53 | ---
54 |
55 | !!! نویسنده
56 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/rsa/rsa.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - RSA
5 | - Modular arithmetic
6 | ---
7 |
8 | ### توضیح کلی درباره رمزنگاری RSA
9 |
10 | **رمزنگاری RSA** یکی از رایجترین و پرکاربردترین الگوریتمهای رمزنگاری است. RSA یک **الگوریتم رمزنگاری نامتقارن** است، به این معنی که از دو کلید مختلف استفاده میکند: یک **کلید عمومی** برای رمزگذاری و یک **کلید خصوصی** برای رمزگشایی.
11 |
12 | ### مفاهیم اصلی
13 |
14 | - **رمزنگاری نامتقارن**: برخلاف رمزنگاری متقارن (که در آن از یک کلید واحد برای رمزگذاری و رمزگشایی استفاده میشود)، در RSA دو کلید مختلف وجود دارد:
15 | - **کلید عمومی** که بهصورت عمومی در دسترس است و برای رمزگذاری استفاده میشود.
16 | - **کلید خصوصی** که محرمانه نگه داشته میشود و برای رمزگشایی به کار میرود.
17 |
18 | - **فاکتورگیری از اعداد اول**: امنیت RSA بر پایه سختی فاکتورگیری اعداد مرکب بزرگ به اعداد اول آنها استوار است. کلید عمومی از حاصلضرب دو عدد اول بزرگ (که بخشی از کلید خصوصی هستند) تشکیل میشود و فاکتورگیری از این اعداد در ابعاد بزرگ، به صورت محاسباتی بسیار دشوار است.
19 |
20 | ### تولید کلید
21 |
22 | - دو عدد اول بزرگ، \( p \) و \( q \)، انتخاب میشوند.
23 | - حاصلضرب آنها \( N = p \times q \) بخش مشترک کلید عمومی و خصوصی است.
24 | - نمایه عمومی \( e \) باید به گونهای انتخاب شود که 1=(\(e,\phi(N)\))GCD
25 |
26 | - در دنیای واقعی معمولاً عدد 65537 به دلیل امنیت و کارایی آن انتخاب میشود.
27 |
28 | - نمایه خصوصی \( d \) از طریق معکوس پیمانه ای \( e \) محاسبه میشود.
29 |
30 |
31 | ### رمزگذاری و رمزگشایی
32 |
33 | - **رمزگذاری**: پیام (متن ساده) با استفاده از کلید عمومی به رمز تبدیل میشود.
34 | - **رمزگشایی**: رمز تولید شده با استفاده از کلید خصوصی به متن اصلی تبدیل میشود. RSA بر اساس نظریه اعداد و حساب پیمانه ای است. فرمول اصلی رمزگذاری به صورت زیر است:
35 |
36 |
37 | $$C \equiv M^e \pmod{N}$$
38 |
39 | - \( C \) متن رمز شده است
40 | - \( M \) متن اصلی (پیام) است
41 | - \( e \) نمایه عمومی است
42 | - \( N \) حاصل ضرب دو عدد اول است
43 |
44 | فرمول رمزگشایی نیز به صورت زیر است:
45 |
46 | $$M \equiv C^d \pmod{N}$$
47 |
48 | - \( d \) نمایه خصوصی است.
49 |
50 | #
51 |
52 | - دو عدد اول بزرگ، \( p \) و \( q \)، انتخاب میشوند.
53 | - حاصلضرب آنها \( N = p \times q \) بخش مشترک کلید عمومی و خصوصی است.
54 | - نمایه عمومی \( e \) باید به گونهای انتخاب شود که 1=(\(e,\phi(N)\))GCD
55 |
56 | - نمایه خصوصی \( d \) از طریق معکوس پیمانه ای \( e \) محاسبه میشود.
57 |
58 |
59 | ### مثال RSA
60 |
61 | #### تولید کلید
62 |
63 | - دو عدد اول را انتخاب کنید: \( p = 61 \)، \( q = 53 \).
64 | - محاسبه \( N = p \times q = 61 \times 53 = 3233 \).
65 | - محاسبه \( \phi(N) = (p-1) \times (q-1) = 3120 \).
66 | - انتخاب \( e = 17 \)، که نسبت به 3120 اول است.
67 | - محاسبه \( d \)، معکوس پیمانه ای \( e \) به \( \phi(N) \)، که برابر با \( d = 2753 \) است.
68 |
69 | #### رمزگذاری
70 |
71 | - فرض کنید پیام \( M = 65 \) است.
72 | - متن رمز شده:
73 |
74 | $$C \equiv M^e \equiv 65^{17} \equiv 2790 \pmod{N}$$
75 |
76 | #### رمزگشایی
77 |
78 | - متن رمز شده \( C = 2790 \).
79 | - پیام اصلی:
80 |
81 | $$M \equiv C^d \equiv 2790^{2753} \equiv 65 \pmod{N}$$
82 |
83 | ---
84 |
85 | !!! نویسنده
86 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/wiki/tonelli-shanks/tonelli-shanks.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - Crypto
4 | - tonelli-shanks
5 | - Modular arithmetic
6 | ---
7 |
8 | ## الگوریتم tonelli-shanks
9 |
10 | در محاسبات پیمانه ای مسئله یافتن یک ریشه دوم به پیمانه یک عدد اول مانند $p$ را می توان به صورت یافتن یک عدد صحیح $x$ به گونه ای توصیف کرد که:
11 |
12 | $$
13 | x^{2}\equiv a \pmod{p}
14 | $$
15 |
16 | که در آن $a$ یک عدد صحیح و $p$ یک عدد اول است. برای هر عدد $a$ یک راه حل برای این معادله در پیمانه $p$ وجود ندارد. با این حال، هنگامی که یک راه حل وجود دارد، الگوریتم Tonneli-Shanks یک روش کارآمد برای یافتن آن ارائه می دهد.
17 |
18 | ??? warning "توجه کنید"
19 |
20 | این الگوریتم برای پیمانه های مرکب (غیر اول) کار نمی کند. یافتن ریشه دوم برای پیمانه های مرکب از نظر محاسباتی معادل فاکتورگیری اعداد صحیح است. یعنی مسئله سختی است.
21 |
22 | ## پیاده سازی
23 |
24 | ```py linenums="1" title="example.py"
25 | def legendre(a, p):
26 | return pow(a, (p - 1) // 2, p)
27 |
28 | def tonelli(n, p):
29 | assert legendre(n, p) == 1, "not a square (mod p)"
30 | q = p - 1
31 | s = 0
32 | while q % 2 == 0:
33 | q //= 2
34 | s += 1
35 | if s == 1:
36 | return pow(n, (p + 1) // 4, p)
37 | for z in range(2, p):
38 | if p - 1 == legendre(z, p):
39 | break
40 | c = pow(z, q, p)
41 | r = pow(n, (q + 1) // 2, p)
42 | t = pow(n, q, p)
43 | m = s
44 | t2 = 0
45 | while (t - 1) % p != 0:
46 | t2 = (t * t) % p
47 | for i in range(1, m):
48 | if (t2 - 1) % p == 0:
49 | break
50 | t2 = (t2 * t2) % p
51 | b = pow(c, 1 << (m - i - 1), p)
52 | r = (r * b) % p
53 | c = (b * b) % p
54 | t = (t * c) % p
55 | m = i
56 | return r
57 |
58 | # test
59 | n=41660815127637347468140745042827704103445750172002
60 | p=100000000000000000000000000000000000000000000000577
61 | r = tonelli(n, p)
62 | print("n=%d, p=%d" % (n, p))
63 | print("roots : %d, %d" % (r, p - r))
64 | ```
65 |
66 | ---
67 |
68 | !!! نویسنده
69 | [MohamadAli](https://github.com/wh1te-r0s3)
--------------------------------------------------------------------------------
/docs/crypto/writeups/2023/CakeCTF/simple-signature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2023/CakeCTF/simple-signature.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2023/TCP1PCTF/Final_Consensus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2023/TCP1PCTF/Final_Consensus.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2023/TCP1PCTF/MITM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2023/TCP1PCTF/MITM.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2023/vSCTF/img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2023/vSCTF/img.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/0xL4ughCTF/RSA-GCD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/0xL4ughCTF/RSA-GCD.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/BSidesSF/truthescrow1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/BSidesSF/truthescrow1.PNG
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/BSidesSF/truthescrow2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/BSidesSF/truthescrow2.PNG
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/BYUCTF/AreSA.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BYUCTF
4 | - BYUCTF-2024
5 | - Crypto
6 | - RSA
7 | ---
8 |
9 |
10 | # چالش AreSA
11 |
12 |
13 | 
14 |
15 |
16 | ## صورت سوال
17 | فایلی که بهمون دادن رو بررسی میکنیم و با توجه به نام متغیرها پی میبریم که از رمزگذاری RSA استفاده شده است.
18 |
19 |
20 | یه فایل متنی بهمون دادن که محتواش اینه:
21 | ```py linenums="1" title="cne.txt"
22 | n = 128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541
23 | e = 65537
24 | c = 93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788
25 | ```
26 |
27 | ## روش حل
28 |
29 | خب خیلی سریع میریم و $n$ رو بررسی میکنیم و میبینیم که یک عدد اول هست. بنابراین $Phi$ را محاسبه کرده و بقیه مراحل بسیار واضح هست.
30 |
31 |
32 | ```python linenums="1" hl_lines="8-10" title="solve.py"
33 | from Crypto.Util.number import *
34 |
35 | n = 128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541
36 | e = 65537
37 | c = 93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788
38 |
39 |
40 | phi = n-1
41 | d=inverse(e, phi)
42 | long_to_bytes(pow(c, d, n))
43 | ```
44 |
45 |
46 |
47 | ---
48 | ??? success "FLAG :triangular_flag_on_post:"
49 |
15 |
16 | ## صورت سوال
17 | لیدیا جین آستن را دوست دارد. در واقع کتاب مورد علاقه او Pride and Prejudice است. او و دوستانش دوست دارند درباره کتاب با هم صحبت کنند، اما اخیرا لیدیا شروع به رمزگذاری پیام های خود کرده است. متأسفانه دوستان لیدیا کد مخفی او را درک نمی کنند -- می توانید به آنها کمک کنید و پیام مخفی را شناسایی کنید؟
18 |
19 | ```
20 | 1.1.1 8.9.8 10.2.11 4.14.28 61.2.4 47.10.3 23.7.37 41.12.4 17.6.10 1.1.21
21 | ```
22 |
23 | ## حل
24 | با توجه به فرمت پیامی که لیدا ارسال کرده حدس زدیم که ممکنه ربطی به این کتاب کرده باشه بنابراین رفتیم و کتاب رو دانلود کردیم و حس زدیم که الگوی پیامی که لیدا ارسال کرده به صورت زیر است:
25 |
26 | ```
27 | Chapter.Paragraph.Character
28 | ```
29 | خوشبختانه حدسمون درست بود و فلگ رو بدست اوردیم.
30 |
31 |
32 |
33 | ---
34 | ??? success "FLAG :triangular_flag_on_post:"
35 |
`byuctf{ilovedarcy}`
36 |
37 |
38 | !!! نویسنده
39 | [MohamadAli](https://github.com/wh1te-r0s3),
40 | [HIGHer](https://twitter.com/HIGH01012)
41 |
42 |
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/BYUCTF/Austen-Supremacy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/BYUCTF/Austen-Supremacy.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/BYUCTF/Times.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/BYUCTF/Times.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IdekCTF/GoldenTicket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IdekCTF/GoldenTicket.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/A.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/Algebra Exam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/Algebra Exam.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/F.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/F.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/H.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/H.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/I.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/I.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/M.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/M.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/N.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/N.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/Rivest, Shamir, Adleman 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/Rivest, Shamir, Adleman 1.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/S.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/S.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/T.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/T.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/U.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/U.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/IronCTF/all_chars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/IronCTF/all_chars.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/LITCTF/SymmetricRSA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/LITCTF/SymmetricRSA.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SDCTF/ComplexProblem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SDCTF/ComplexProblem.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/1.jpg
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/1.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/2.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/3.jpg
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/Bombastic.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/Bombastic.PNG
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/mascot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/mascot-1.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/mascot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/SnappCTF/mascot-2.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/SnappCTF/mascot.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Crypto
6 | - AES-ECB
7 | - ECB mode
8 | ---
9 |
10 | # چالش mascot
11 |
12 | تو این چلنج یه فایل بش داریم که به ما میفهمونه انکریپشن استفاده شده تایپ ECB هست و این تایپ از انکریپشن AES یه باگ (که البته فیچر هم هست :joy:) که باید از این باگ سوء استفاده کنیم تا بتونیم فلگ رو بخونیم
13 |
14 | معروف ترین عکس در رابطه با این باگ این عکسه
15 |
16 | ![[PeNgUiN!]](mascot-1.png)
17 |
18 | فرمت ppm به صورتی هست که 3 خط اول به عنوان هدر تعریف میشن
19 | ما با خط دوم کار داریم که رزولوشن هست :smiling_imp:
20 |
21 | یه اسکریپت پایتون مینویسیم که بیاد رزولوشن رو بروت فورس کنیم
22 |
23 | تو یه رایتاپ دیگه تو همین بلاگ اشاره کردم که:
24 | > پیکسل های تصاویر از چپ به راست تکمیل میشن و ارتفاع تاثیری در پیکسل ها و ترتیبشون نداره
25 |
26 | پس ما فقط پارامتر x رو تغییر بدیم =)))
27 |
28 | اسکریپت بدین صورت است
29 |
30 | ```python linenums="1"
31 | b = open("flag.enc", "rb").read()
32 |
33 | base = """P6
34 | {} {}
35 | 65535
36 | """
37 | y = 100
38 | for x in range(1000):
39 | with open("res/{}x{}.png".format(x,y), 'wb') as f:
40 | f.write(base.format(x,y).encode() + b)
41 | ```
42 |
43 | بعد از اجرای اسکریپت، فلگ در رزولوشن 740x100.png مشاهده میشود
44 |
45 | 
46 | ---
47 | !!! نویسنده
48 | [SafaSafari](https://twitter.com/SafaSafari3)
49 |
50 |
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/TFCCTF/CCCCC.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/TFCCTF/CCCCC.PNG
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/TFCCTF/CCCCC.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - TFC CTF
4 | - TFC CTF 2024
5 | - Crypto
6 | ---
7 |
8 | # چالش CCCCC
9 |
10 |
11 | 
12 |
13 |
14 | ## آشنایی با مساله
15 |
16 | در این سوال به ما فایل `ccccc.txt` داده شده است. بیایید نگاهی به محتویاتش بندازیم:
17 |
18 |
19 | ```plain title="ccccc.txt" linenums="1"
20 | 5c4c4c6c4c3c4c3c5c4c4c6c7cbc6c3c7c3c6c8c6cfc7c5c7c4c5cfc6c3c6cfc7c5c7c4c5cfc6c3c7c4c3c0c5cfc6c3c6cdc7c9c5cfc6c3c6c2c3c0c7c9c5cfc6c3c3c4c6cec6c4c5cfc6c3c6cdc7c9c5cfc6c3c6c4c6cfc6c7c5cfc6c3c6c1c6cec6c4c5cfc6c3c6cdc7c9c5cfc6c3c6c3c3c4c3c7c7cdc0ca\n
21 | ```
22 |
23 |
24 | ## راه حل
25 |
26 |
27 | در نگاه اول کلی حرف `c` تو فایل داده شده به چشممون میخوره مانند اسم سوال
28 | در ادامه ما میدانیم فرمت فلگ با `TFCCTF` شروع میشود و داریم
29 | ```py
30 | print( b'TFCCTF'.hex() )
31 | # 544643435446
32 | ```
33 |
34 | با توجه به مقدار هگز حروف آغازین فلگ و فایل داده شده، پی میبریم کافیست `c` های اضافی را حذف کنیم تا به فلگ برسیم:
35 |
36 | ```py
37 | print(bytes.fromhex(s[::2]))
38 | ```
39 |
40 |
41 |
42 | ---
43 | ??? success "FLAG :triangular_flag_on_post:"
44 |
14 |
15 | ## آشنایی با مساله
16 |
17 | در این سوال به ما دو فایل `main.py` و `output.txt` داده شده است که در ادامه محتویات این دو فایل رو مشاهده میکنید:
18 | === "main.py"
19 | ```python title="main.py" linenums="1"
20 | from secret import generate_next_key, flag
21 | import hashlib
22 | from Crypto.Cipher import AES
23 | from Crypto.Util.Padding import pad
24 |
25 | initial = 11131221131211131231121113112221121321132132211331222113112211
26 |
27 | initial = generate_next_key(initial)
28 | print(initial)
29 |
30 | initial = generate_next_key(initial)
31 | h = hashlib.sha256()
32 | h.update(str(initial).encode())
33 | key = h.digest()
34 |
35 | cipher = AES.new(key, AES.MODE_ECB)
36 | print(cipher.encrypt(pad(flag.encode(),16)).hex())
37 | ```
38 |
39 | === "output.txt"
40 | ```plain title="output.txt" linenums="1"
41 | 311311222113111231131112132112311321322112111312211312111322212311322113212221
42 | f143845f3c4d9ad024ac8f76592352127651ff4d8c35e48ca9337422a0d7f20ec0c2baf530695c150efff20bbc17ca4c
43 | ```
44 |
45 | ظاهرا تو این سوال باید با استفاده از `initial` و مقدار پرینت شده، بیایم تابع `generate_next_key` رو پیاده سازی کنیم و سپس با داشتن کلید بسادگی میتوان متن را رمزگشایی کرد و به فلگ رسید.
46 |
47 | ## راه حل
48 |
49 | !!! Tip "توصیه"
50 | قرار نیست ما همیشه همه چیز رو بدونیم و اینکه تو مسابقاتمون از هوش مصنوعی ها در راستا افزایش کاراییمون بهدرستی کمک بگیریم، کار هوشمندانهای هستش.
51 |
52 | برای حل این مساله ابتدا با
53 | [chatgpt](https://chatgpt.com)
54 | مشورت کردم و خوشبختانه ایشون تونست این تابع رو برای من پیاده سازی کنه و بخش سخت مساله رو برا من انجام داد و در ادامه بسادگی میتوان کلید `aes` را بدست بیاوریم و بعد از رمزگشایی به فلگ میرسیم.
55 |
56 | !!! Note ""
57 | همچنین میتوانستیم از
58 | [این سایت](https://oeis.org/A005150)
59 | نیز جهت حل این مساله کمک بگیریم
60 |
61 |
62 | ```py
63 | import hashlib
64 | from Crypto.Cipher import AES
65 |
66 | def generate_next_key(s):
67 | result = ""
68 | i = 0
69 | while i < len(s):
70 | count = 1
71 | while i + 1 < len(s) and s[i] == s[i + 1]:
72 | i += 1
73 | count += 1
74 | result += f"{count}{s[i]}"
75 | i += 1
76 | return result
77 |
78 | initial = "11131221131211131231121113112221121321132132211331222113112211"
79 | enc = 'f143845f3c4d9ad024ac8f76592352127651ff4d8c35e48ca9337422a0d7f20ec0c2baf530695c150efff20bbc17ca4c'
80 |
81 | initial = generate_next_key( generate_next_key(initial) )
82 | key = hashlib.sha256(initial.encode()).digest()
83 | AES.new(key, AES.MODE_ECB).decrypt( bytes.fromhex(enc) )
84 | ```
85 |
86 | ---
87 | ??? success "FLAG :triangular_flag_on_post:"
88 |
14 |
15 | ## آشنایی با مساله
16 |
17 | تو این سوال رشته زیر به ما داده شده است و ما باید به طریقی فلگو بدست بیاریم
18 |
19 | ```
20 | CCCA CACG CAAT CAAT CCCA CACG CTGT ATAC CCTT CTCT ATAC CGTA CGTA CCTT CGCT ATAT CTCA CCTT CTCA CGGA ATAC CTAT CCTT ATCA CTAT CCTT ATCA CCTT CTCA ATCA CTCA CTCA ATAA ATAA CCTT CCCG ATAT CTAG CTGC CCTT CTAT ATAA ATAA CGTG CTTC
21 | ```
22 |
23 |
24 |
25 | ## راه حل
26 |
27 | برای حل این مساله ابتدا با کلید واژه های استخراج شده از سوال (`Genetic Code CTF`) تو گوگل سرچ کردم تا ببینم انکدینگی با این نام از قبل وجود داره یا یک انکدینگ ابداع طراح سوال هستش
28 | که به نتایج خوبی نظیر
29 | [این سایت ](https://www.dcode.fr/codons-genetic-code)
30 | رسیدم، ولی متاسفانه این سایت قادر به دیکد متن داده شده نشد
31 |
32 | در ادامه با مطالعه بیشتر پی بردم که که هر کدام از حروف `A`, `C`, `T`, `G` نمایانگر یک عدد دوبیتی هستند(**مبنا 4**)
33 | با دونستن حروف ابتدایی فلگ (`TFCCTF`) میتوانیم بسادگی تشخیص بدهیم هر حرف نمایانگر چه عددی هستش
34 |
35 |
36 | 
37 |
38 |
39 | جدول نهایی ما بصورت زیر خواهد بود:
40 |
41 |
15 |
16 | ## شرح چالش
17 |
18 | این چالش یک دنباله کد را به شکل زیر به ما داده که براساس اسم چالش و حروف داخل کد که حروف بزرگ و سپس کوچک دارد به نظر نمادهای عناصر شیمیایی جدول تناوبی را ارائه میداد که به صورت پشت سر هم و بدون هیچ فاصلهای نوشته شدهاند. در اینجا، هدف هر نماد عنصری احتمالاً به عدد اتمی آن عنصر اشاره دارد.
19 |
20 | ```
21 | TeSbILaTeSnTeNoISnTeCsCsDyICdTeIISnTeLaSbCdTeTeTeLaTeSbINoTeSbSbInICdTeBaSbSbISnIYbSbCdTeXeINoSbSbTeHoTeITeFmTeITeMdITeSbICsEr
22 | ```
23 |
24 |
13 |
14 | ## آشنایی با مساله
15 |
16 | تو این سوال به ما دو فایل
17 | `challenge.py`
18 | و
19 | `output.txt`
20 | داده شده است.
21 |
22 | === "challenge.py"
23 | ```py title="challenge.py" linenums="1"
24 | from secret import flag
25 |
26 | size = len(flag)
27 | for i in range(size-1):
28 | print(ord(flag[i]) + ord(flag[i+1]), end=",")
29 | ```
30 | === "output.txt"
31 | ```txt title="output.txt" linenums="1"
32 | 216,215,218,225,206,187,153,163,166,174,217,167,169,199,153,173,227,156,155,199,203,156,96,155,222,210,207,163,148,196,200,171,187,225,233,
33 | ```
34 |
35 | همانطور که در کد مشخص است در این سوال کد اسکی حروف کنارهم باهم جمع شده اند و بصورت لیستی در اختیار ما قرار گرفته است و ما باید فلگ را بازیابی کنیم.
36 |
37 | ## راه حل
38 |
39 | از آنجا که ما میدانیم فلگ با
40 | `uctf`
41 | شروع میشود، بسادگی میتوانیم حروف بعدی را بدست بیاوردیم.
42 |
43 | ```py
44 | lst = [216,215,218,225,206,187,153,163,166,174,217,167,169,199,153,173,227,156,155,199,203,156,96,155,222,210,207,163,148,196,200,171,187,225,233]
45 |
46 | known = [ord('u')]
47 | for i in range(len(lst)):
48 | known.append( lst[i]-known[-1])
49 | print( ''.join(map(chr, known)) )
50 | ```
51 |
52 |
53 | ---
54 | ??? success "FLAG :triangular_flag_on_post:"
55 |
14 |
15 | ## آشنایی با مساله
16 |
17 | در این سوال به ما دو فایل
18 | `public_key.txt`
19 | و
20 | `encrypted_message.txt`
21 | داده شده است
22 |
23 | ```txt title="public_key.txt" linenums="1"
24 | Constant Number = 65537
25 | Public Key = 139551725550533062709001988886045836849
26 | ```
27 | ```txt title="encrypted_message.txt" linenums="1"
28 | 70886407371304490355797613974913658205
29 | ```
30 | که ظاهرا فلگ با رمزنگاری rsa رمز شده است و باید بتوانیم متن رمز را رمزگشایی کنیم تا به فلگ برسیم
31 |
32 | ## راه حل
33 |
34 | برای این چالش از آنجا که **N** کوچک است، بسادگی به کمک سایت
35 | [factordb](https://factordb.com/index.php?query=139551725550533062709001988886045836849)
36 | میتوانیم عوامل اول **N** را بدست آوردیم و به فلگ برسیم.
37 |
38 |
39 | ```py
40 | pad = lambda s: '0'+s if len(s)%2 else s
41 | long_to_bytes = lambda c: bytes.fromhex(pad(hex(c)[2:]))
42 | inverse = lambda a, b: pow(a, -1, b)
43 |
44 | e = 65537
45 | N = 139551725550533062709001988886045836849
46 | c = 70886407371304490355797613974913658205
47 |
48 | p, q = 10073925425153076761, 13852765397894786009
49 | assert p*q == N
50 | phi = (p-1)*(q-1)
51 | d = inverse(e, phi)
52 | long_to_bytes(pow(c, d, N))
53 | ```
54 |
55 | همچنین میتوانستیم از
56 | [این صفحه](https://www.dcode.fr/rsa-cipher)
57 | سایت dcode.fr نیز برای بدست آوردن فلگ استفاده کنیم.
58 |
59 |
67 |
68 |
69 | !!! نویسنده
70 | [mheidari98](https://github.com/mheidari98)
71 |
72 |
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/Urmia-CTF/dcode_fr.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/Urmia-CTF/dcode_fr.PNG
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/Urmia-CTF/step1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/Urmia-CTF/step1.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/Urmia-CTF/step2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/Urmia-CTF/step2.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/Urmia-CTF/step3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/Urmia-CTF/step3.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2024/Urmia-CTF/step4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2024/Urmia-CTF/step4.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/PQC0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/PQC0.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/PQC1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/PQC1.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/image.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/kem-keyGen algorithm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/kem-keyGen algorithm.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/key establishment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/key establishment.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/openssl key info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/TsukuCTF/openssl key info.png
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/TsukuCTF/output1.txt:
--------------------------------------------------------------------------------
1 | ==== private_key[:128] ====
2 | -----BEGIN PRIVATE KEY-----
3 | MIIJvgIBADALBglghkgBZQMEBAIEggmqMIIJpgRAaa2HTyQm2vmmDmw5eheMJp6g
4 | Jm3scrIloNZZF2eKncQZfPyppNNNOwAV3WY
5 | ==== ciphertext(hex) ====
6 | 73e322ebc019d4c299e4e270b66d27c96e3cef69834d7fde38c6d7d2f3c3cedeb94f3414b4023e65924b498dc5a314c46390270387001282774702af9482220b92560caa7e304fc499257acefafa860bdd0522239ce7df3b0ecf04fa4dca2697788e2f733576fa1015c7927d6f7a765970e97203fd48a17bf56ba86d23e234100f74092b3a2c8c1a88444a5454174b526121bc1dceeea1d8a1fb2e2b5f88ead8ea03af10d95fe34e6277678b6b907007f256bb12614699109139be3d72ce94b143a3f61cc35fee36b70893153e28b21002df4835af9aff43c36b873a430b049db97b75cea1628984e8dc912e511d9a358621e6d0f9762df7301b6e22d9237deedc1a72a0068ae84d9446827daf59e8e8728e0c46d149a2d4c4fdb67bfe8e39d7acbdc384f560f7f2ea253b350e80124098fc923e5bf9fc5d385858f4ecbb46130e55a2ff704b2d7b69e5d9b3f9fd3c0ef5bf9a7e17e095206de6d8254fae8f5cb5ac1f8fef51a23a65a33ca91d027e2977931f6716320a0f6ad6962a162c456ef9482ea6f59bff0ea264efc1072d9edfb6536b2a7aa67cb618512048fff844e6c82d02fc3e3bcd6896e1e35ab8e47e9abf4de6900850fad7732c4f56553698ce7cfdaa01aa1cae2fc88ca0043c94d22a5c42f1893816571e82d6a3b66b8f835f811a085381388cfe5c36428eaae7a4e664bb0c4c00e0387d9e74f5041c37b349c976e169c9703d4d3c6eea3d26cd43eb38e0661cbd8687056820cb320df5421d5268c2e9645f0492033c713256bdd5e79cebd3efab8c859426bb6989c70aa0639d583c370446a1271c32abd9079e0aa88ede2b158261db39ae5d2d189fced9406a9dc5329a8b959bdd4e245ea1f8be2d5516cbd5777b64e09bd69ba07997e1a72fdb03ba2620a1c90d7a654eff545c49a8196e0ab93218d6cfb36b1cd0125900e26dd6688aa400d3d7684182a6011217469795a381b5bb7fbc805b28acd097a149649cb601ed571d529a9a8d45d3ab4d41e3e3d8e136d3b7fb1d571c44b4848e5b56dee14b0f431a5c4f417af6790f3b6df281974c4f9340b90e3f1880ee9c719ea1b7bd12356045f9ce25cbd24769aa1acabfee8d7c8e57f0d876f45ebefa5871bc0c10e0e706a7703ed856f3da904edf3a6d472321844b681d5f0c98a4b0e178eb6096d36ce90334d6df6f4ed877852a6f45ade4eeadf72cccdcf342eccd8d1b2322b83047fd256e7a7152802efc4577e3a90c714a7b2af352efe9111c149c8fbaa71bca6d515ec4e9529b5a55d9309378e0698c7c33e85e3425bfda177ec1aa1d81e402ce54405700dc7df9d4688cfa98e53657f7e4c8db52bec306a7e07b73fc26ce4a48888e65c80a4af8ec8251abbbd5521f0b098e5a8f43112fe9d96feeb51bcbedc19dd38d0f4def5be292411a5668d329bb0b74cc6a8526291421b9490bf29dcdc8f0072c7391434cf30f29c007c38f3ef31ffe774f4d9460bd743e4ce65b0617aa52a30914e733257f4b6a80e1f6aff06c342f8dd30532621db7df
7 | ==== encrypted_flag(hex) ====
8 | fd302c76946654e6e469a4656b90a8d60fb3492ed8c2238350e8e833a35b3587
--------------------------------------------------------------------------------
/docs/crypto/writeups/2025/UMDCTF/Cover-brainrot13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/crypto/writeups/2025/UMDCTF/Cover-brainrot13.png
--------------------------------------------------------------------------------
/docs/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/favicon.png
--------------------------------------------------------------------------------
/docs/forensic/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: material/file-search-outline
3 | ---
4 |
5 | # جرمشناسی
6 |
7 | تا حالا با خودتون فکر کردین وقتی یه سازمانی هک میشه، چجوری میفهمن از کجا خوردن؟
8 |
9 | ما وارد عمل میشیم :sunglasses:
10 |
11 | بصورت کلی علم جرم شناسی به این عمل میپردازه که یک جرم چجوری اتفاق افتاده
12 |
13 | شرلوک حوزه امنیت سایبری ماییم =))
14 |
15 | تو این دسته از چالش ها اکثرا یه فایلی در اختیار ما قرار میدن و ما باید با توجه به دانشی که از قبل کسب کردیم، در میان انبوهی از دیتا به فلگ مورد نظر طراح برسیم
16 |
17 | تو این علم دانش فایل سیستم به وفور نیاز میشه و دانش کلی فایل ها از قبیل این که هر فایل چه فرمتی داره و فایل ها به چه صورت خونده یا نوشته میشن و تریک های آسیب پذیری در اونها به چه صورت هست
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/doctor-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/doctor-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/doctor-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/doctor-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/doctor-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/doctor-3.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/doctor.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BSidesSF
4 | - BSidesSF-2024
5 | - Forensics
6 | - Word
7 | ---
8 |
9 | تو این چلنج به ما یه فایل docx دادن که یه سری عکس رو نشون میده
10 |
11 | در قدم اول مواجهه با فایل ورد، باید بازش کنیم و اگه فلگی توش نبود، در وهله دوم با zip viewer بازش کنیم
12 |
13 | تو محتویات متنی این فایل هم فلگی نبود و پس با zip viewer بازش میکنیم =)))
14 |
15 | 
16 |
17 | یکم که تو فولدر ها بگردیم و یه سری چیزا مثل وجود داشتن یا نداشتن macro مطمئن بشیم، چشممون میخوره به عکس هایی که تو فایل ورود گنجونده شدن
18 |
19 | اما wait, what?
20 |
21 | 
22 |
23 | چرا ۵ تا عکسه؟
24 | مگه تو فایل ورد ۴ تا نبود؟
25 |
26 | یه عکس اضافیه
27 |
28 | که اونم image-0.png هست فلگ توشه
29 |
30 | 
31 |
32 |
33 | ---
34 | ??? success "FLAG :triangular_flag_on_post:"
35 |
`CTF{st0ck_cut3_p1c5}`
36 |
37 |
38 | !!! نویسنده
39 | [SafaSafari](https://twitter.com/SafaSafari3)
40 |
41 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/javai-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/javai-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/javai-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/javai-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/javai.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BSidesSF
4 | - BSidesSF-2024
5 | - Forensics
6 | - Word
7 | ---
8 |
9 | اینجا هم یه فایل docx به ما دادن و بعد از باز کردنش متوجه میشیم باید با zip viewer هم یه فرصت بهش بدیم
10 |
11 | عه این فایل getflag.class چیه اینجا؟
12 |
13 | 
14 |
15 | فایل رو اکسترکت میکنیم و میریم سراغ JadX و فایل رو باز میکنیم و فلگ رو دو دستی تقدیممون میکنه
16 |
17 | 
18 |
19 | ---
20 | ??? success "FLAG :triangular_flag_on_post:"
21 |
`CTF{javai_java_with_100x_ai}`
22 |
23 |
24 | !!! نویسنده
25 | [SafaSafari](https://twitter.com/SafaSafari3)
26 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/redacted-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/redacted-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/redacted-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/redacted-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/redacted.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BSidesSF
4 | - BSidesSF-2024
5 | - Forensics
6 | - PNG
7 | ---
8 |
9 |
10 | اینجا یه عکس داریم که یه تیکش با ادیتور موبایل روش خط کشیده شده
11 |
12 | 
13 |
14 | یه بار یه ترفند تو توییتر دیدم که میشد زیر این خطا رو خوند =)))
15 |
16 | پس دست به کار شدم و تو gimp فایل رو باز کردم و
17 |
18 | با یکم بازی بازی کردن با آپشنای gimp تونستم فلگ رو بکشم بیرون
19 |
20 | 
21 |
22 | ---
23 | ??? success "FLAG :triangular_flag_on_post:"
24 |
`CTF{censor_this}`
25 |
26 |
27 | !!! نویسنده
28 | [SafaSafari](https://twitter.com/SafaSafari3)
29 |
30 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/sgai-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/sgai-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/sgai-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/sgai-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/sgai-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/sgai-3.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/sgai-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/BSidesSF/sgai-4.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/BSidesSF/sgai.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BSidesSF
4 | - BSidesSF-2024
5 | - Forensics
6 | - SGI
7 | - Steganography
8 | ---
9 |
10 | این چلنج ۴ تا فلگ مختلف داشت که موفق شدم ۳ تاشون رو به دست بیارم
11 |
12 | پسوند فایل چیه؟ sgi دیگه چه کوفتیه؟
13 |
14 | مهم نیس
15 |
16 | چون اگه دبل کلیک کنیم روش، با gimp باز میشه :joy:
17 |
18 | به شخصه خیلی باهاش بازی بازی کردم و تا بالاخره فهمیدم اگه layer alpha رو مخفی کنم، یه فلگ میزنه بیرون
19 |
20 | 
21 |
22 | برا فلگ بعدی باید حرفه ای تر عمل کنیم :sunglasses:
23 |
24 | پس میریم سراغ hex editor
25 |
26 | 
27 |
28 | زارت فلگ بعدی هم دراومد =)))
29 |
30 | برا فلگ سوم بعد از ساعتها آزمون و خطا تصمیم گرفتم یه فایل sgi دیگه وردارم و با این مقایسه کنم
31 |
32 | پس با این دستور، یه rebase از همین فایل sgi ساختم و هردو رو تو hex editor باز کردم
33 |
34 | ```bash
35 | convert sgai.sgi a.sgi
36 | ```
37 |
38 | 
39 |
40 |
41 | تفاوت واضحه
42 |
43 | یه مشت FF اینور هستن که اونور 00 ان
44 |
45 | با بررسی struct فایل [از اینجا](https://en.wikipedia.org/wiki/Silicon_Graphics_Image)
46 | فهمیدم که این تیکه پدینگه
47 |
48 | پس کل پدینگ که میشه از 0x6c تا 0x1ff کپی کردم xor زدم با FF تا همشون 00 بشن
49 |
50 | 
51 |
52 | اینم از فلگ سوم
53 |
54 | ---
55 | ??? success "FLAG :triangular_flag_on_post:"
56 |
17 |
18 |
19 | !!! نویسنده
20 | [SafaSafari](https://twitter.com/SafaSafari3)
21 |
22 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/ImaginaryCTF/elves-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/ImaginaryCTF/elves-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/ImaginaryCTF/elves-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/ImaginaryCTF/elves-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/ImaginaryCTF/elves-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/ImaginaryCTF/elves-3.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/ImaginaryCTF/elves.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/ImaginaryCTF/elves.bmp
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/ImaginaryCTF/elves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/ImaginaryCTF/elves.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/0_chall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/0_chall.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/1_statistics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/1_statistics.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/2_http.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/2_http.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/3_bad_packets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/PatriotCTF/Abnormal-Maybe-Illegal-files/3_bad_packets.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-1.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-2.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-3.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-4.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-5.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-6.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-7.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/SnappCTF/false-sight-8.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/false-sight.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Reverse
6 | - BMP
7 | ---
8 |
9 | 
10 |
11 | بدون فوت وقت میریم سراغ hex editor و میبینیم که به به
12 |
13 | 
14 |
15 | یه استرینگ به چشم میخوره به اسم
16 | BGRs
17 |
18 | با چندتا سرچ تو گوگل میفهمیم که فرمت فایل bmp هست
19 |
20 | با [مجیک بایت](https://en.wikipedia.org/wiki/List_of_file_signatures) bmp فایل رو به این صورت فیکس میکنیم
21 |
22 | 
23 |
24 | 
25 |
26 | خوردیم به در بسته =))
27 |
28 | از اون جایی که ۹۹ درصد CTF های ایرانی رو اسیس طراحی کرده
29 |
30 | از چلنج های قبلی اسیس یادمونه که یه چلنج بوده که همینجوری به فایل تصویری علامت سوال میرسیدیم و باید لنف تصویری رو جلو میرفتیم و یه عکس دیگه که چسبیده بوده به عکس رو پیدا کنیم و فلگ رو توش پیدا میکردیم
31 |
32 | پس میریم سراغ [exiftool](https://en.wikipedia.org/wiki/ExifTool)
33 |
34 | 
35 |
36 | لاین سلکت شده به ما این رو میرسونه که فایل تصویریمون تا اینجا بیشتر نباید باشه، اما...
37 |
38 | 
39 |
40 | اما میبینیم که پاشو از گلیمش دراز تر کرده =)))
41 |
42 | پس میزنیم کل عکسی که با علامت سوال پر شده رو پاک میکنیم :smiling_imp:
43 |
44 | اون علامت سوالا رو میبینید آخرای صفحه؟
45 |
46 | اونا توجه منو جلب میکنن
47 |
48 | مخصوصا که چهار تان و مجیک بایت bmp هم چهار تاس
49 |
50 | پس تا اونجا پاک میکنیم =))
51 |
52 | حالا کی حال داره بشینه کل بایتا رو بازنویسی کنه؟
53 |
54 | از قسمت اول همون فایل اولیه که مجیک بایتش رو فیکس کردیم، بایت ها رو تا جایی که به ۰۰ میرسیم کپی میکنیم و جوری میزاریم تو فایل که مجیک بایت بیفته رو علامت سوالا
55 |
56 | یه همچین عکسی در میاد
57 |
58 | 
59 |
60 | کاملا واضحه که رزولوشن عکس مشکل داره
61 |
62 | با خوندن فرمت فایل bmp متوجه میشیم که کجا باید رزولوشن رو ست کنیم
63 |
64 | با این اسکریپت python میزنیم همه رزولوشن ها رو ست میکنیم رو عکس و تو یه فایل ذخیره میکنیم
65 |
66 | برای این بروت فورس فقط نیازه x عکس رو بروت فورس کنیم
67 |
68 | چون پیکسل های تصاویر از چپ به راست تکمیل میشن و ارتفاع تاثیری در پیکسل ها و ترتیبشون نداره
69 |
70 | ```python linenums="1"
71 | hdr = bytearray.fromhex("42 4D 42 42 0F 00 00 00 00 00 7A 00 00 00 6C 00 00 00")
72 | a = open("false_sight", 'rb').read()[0x16:]
73 |
74 | for i in range(1, 10000):
75 | with open("res/{}.bmp".format(i), 'wb') as f:
76 | f.write(hdr + i.to_bytes(4, 'little') + a)
77 | ```
78 |
79 | بعد از اجرای اسکریپت میریم سراغ عکسا و میبینیم این عکس خواناس
80 |
81 | 
82 | ---
83 | !!! نویسنده
84 | [SafaSafari](https://twitter.com/SafaSafari3)
85 |
86 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/SnappCTF/snapp-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Reverse
6 | - PDF
7 | - PDFLatex
8 | ---
9 |
10 | اینجا یه فایل pdf داریم که با firefox بازش میکنیم
11 |
12 | با زدن یه Ctrl+a میبینیم که یه سری متن ها هست که ما نمیبینیم
13 |
14 | دورشون یه سری متن نوشته شده، از «ولکام» شروع میکنیم و پاد ساعتگرد میچرخیم و هی کپی میکنیم و فلگ در میاد =))
15 |
16 | 
17 |
18 | ??? success "FLAG :triangular_flag_on_post:"
19 |
15 | In the bustling bazaars of ancient Persia, where merchants traded silk and spices, a secret message has been intercepted. Legend has it that this message holds the key to discovering the whereabouts of a hidden treasure deep within the ancient emperor of Persia. However, the message has been cunningly encrypted and is hidden within a sea of network traffic. Can you decode it before the secret slips through your fingers?
16 |
17 |
18 | یک فایل [packet capture](https://en.wikipedia.org/wiki/Pcap) بهمون داده شده که باید فلگ رو از داخلش در بیاریم
19 | { style="display: block; margin: 0 auto" }
20 |
21 |
22 | فایل رو اول که باز کردم با خودم گفتم این همه پیام [ARP](https://en.wikipedia.org/wiki/Address_Resolution_Protocol) زیادیه برای یه شبکه، اونم پشت سر هم
23 |
24 | با این که مشکوک بود اول رفتم سراغ پیدا کردن پیام هایی که مخفی نشدن و اگه به جایی نرسیدم برگردم سر ARP
25 |
26 | همیشه اول فیلتر میزنم روی [فلگ پوش TCP](https://datatracker.ietf.org/doc/html/rfc9293#section-3.1-6.14.2.10.1) ببینم پیامی هست که رمز نگاری نشده باشه
27 | { style="display: block; margin: 0 auto" }
28 |
29 | به نظر میاد چیزی پیدا کردیم
30 |
31 | [http](https://en.wikipedia.org/wiki/HTTP)
32 | نشونه خوبیه
33 |
34 | [follow http stream](https://www.wireshark.org/docs/wsug_html_chunked/ChAdvFollowStreamSection.html)
35 | کردم
36 | { style="display: block; margin: 0 auto" }
37 |
38 |
39 | به نظر میاد که فایل داخل ریسپانس هستش
40 |
41 | فایل رو که سیو کردم و روش کامند
42 | [file](https://www.man7.org/linux/man-pages/man1/file.1.html)
43 | روی زدم دیدم عکسه
44 | ```bash
45 | $file a.png
46 | a.png: PNG image data, 256 x 256, 8-bit/color RGBA, non-interlaced
47 | ```
48 | بازش کردم
49 | { width=80%; height: auto; style="display: block; margin: 0 auto" }
50 |
51 | پایین سمت راست عکس نوشته بی معنی میبینیم که اگه به الگوش دقت کنیم متوجه میشیم که احتمالا از [الگوریتم سزار](https://en.wikipedia.org/wiki/Caesar_cipher) استفاده شده برای رمز نگاری این متن
52 |
53 | چون
54 |
55 | ۱.حرف اول کلمه ها بزرگه
56 |
57 | ۲.شبیه متن عادی هستش که صرفا معنی نمیده به این مظور که چینش و تکرار حروف اشناس
58 |
59 | کلید از ۱ تا ۲۸ سزار رو تست کردم
60 |
61 | و با کلید ۲۲ به متن زیر رسیدم
62 |
63 | Tabriz_Grand_Bazaar
64 |
65 | داخل فرمت
66 | UCTF{}
67 | گذاشتم و قبول شد
68 |
69 | ---
70 | ??? success "FLAG :triangular_flag_on_post:"
71 |
`UCTF{Tabriz_Grand_Bazaar}`
72 |
73 | !!! نویسنده
74 | [Ali](https://github.com/AliGhaffarian)
75 |
76 |
77 |
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/1_pcap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/1_pcap.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/2_tcp_push_flag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/2_tcp_push_flag.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/3_filter_on_not_tls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/3_filter_on_not_tls.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/4_icmp_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/4_icmp_filter.png
--------------------------------------------------------------------------------
/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/5_icmp_filtered_standard_payload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/forensic/writeups/2024/Urmia-CTF/hidden-coordinates-files/5_icmp_filtered_standard_payload.png
--------------------------------------------------------------------------------
/docs/getStarted/CTF-in-Iran.md:
--------------------------------------------------------------------------------
1 | # CTFس در ایران
2 |
3 | ## تاریخچه برگزاری CTF در ایران
4 | ### مسابقه ASIS
5 | ### فتح پرچم دانشگاه شریف
6 | ### mapnactf
7 | ### فتح پرچم دانشگاه ارومیه
8 | ### سایر مسابقات
9 | ## سطح کیفی مسابقات در ایران
10 | ## تیم ها مطرح ایرانی
11 | ## قوانین و شرایط عجیب غریب در مسابقات داخلی
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/DefconCTF-logo.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/DefconCTF-logo.jpeg
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/Jeopardy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/Jeopardy.jpg
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/attack-defense.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/attack-defense.png
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/ctftime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/ctftime.png
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/defcon1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/defcon1.jpg
--------------------------------------------------------------------------------
/docs/getStarted/CTF-introduction/on-site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/CTF-introduction/on-site.png
--------------------------------------------------------------------------------
/docs/getStarted/Sample-writeup.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/Sample-writeup.zip
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/247ctf-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/247ctf-logo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/HTB-Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/HTB-Logo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/THMlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/THMlogo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/crackmes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/crackmes.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/cryptohack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/cryptohack.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/ctflearn logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/ctflearn logo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/forensic_repo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/forensic_repo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/hacktoria.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/hacktoria.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/picoctf-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/picoctf-logo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/portswigger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/portswigger.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/pwncollege.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/pwncollege.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/ringzer0ctf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/ringzer0ctf.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/rootme logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/rootme logo.png
--------------------------------------------------------------------------------
/docs/getStarted/beginners-guide/w3challs.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/beginners-guide/w3challs.jpg
--------------------------------------------------------------------------------
/docs/getStarted/contribution.md:
--------------------------------------------------------------------------------
1 | # نحوه همکاری
2 | ما همه از کسانی که بخواهند با ما همکاری داشته باشند به گرمی استقبال میکنیم.
3 | این همکاری میتواند در قالب مشارکت در بخشهای زیر خلاصه شود:
4 |
5 | - **نوشتن رایتاپ:**
6 |
7 | اگر تمایل دارید که دانش و تجربه خود در حل چالشهای CTF را در اختیار دیگران بگذارید خوشحال خواهیم شد که از بستر این سایت استفاده کنید. شما میتوانید ابتدا نکات مربوط به [نگارش رایتاپ](https://flagmotori.github.io/writeups/introduction/writing-method/) و نحوه [نوشتن با فرمت md](https://flagmotori.github.io/writeups/introduction/writing-method/) را مطالعه کنید تا بعد از بازبینی رایتاپ، آن را با نام خودتان منتشر کنیم.
8 |
9 | - **عضویت در تیم:**
10 |
11 | برای عضویت در تیم فلگ موتوری هیچ محدودی از لحاظ سطح دانش وجود ندارد و تنها ملاک ارزیابی تلاش و پشتکار فرد در طول زمان است. برای عضویت در تیم، میتوانید فرم موجود در [اینجا](https://forms.gle/TsembkjqfQycTm1y8) را پر کنید یا از طریق دیسکورد به آدرس mheidari98 پیام دهید.
12 |
13 | - **ترجمه و تولید محتوا:**
14 |
15 | تهیه مقالههای پژوهشی فارسی مرتبط با CTF یا تصاویر و ویدیوهای آموزشی نیز میتواند از موارد همکاری با ما باشد.
16 |
17 | - **انتقاد و پیشنهاد:**
18 | - ...
--------------------------------------------------------------------------------
/docs/getStarted/logo_template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/getStarted/logo_template.png
--------------------------------------------------------------------------------
/docs/getStarted/main.py:
--------------------------------------------------------------------------------
1 | from web3 import Web3
2 | import json
3 |
4 | setupContract = "0x1AC90AFd478F30f2D617b3Cb76ee00Dd73A9E4d3"
5 | url = "https://eth-sepolia.g.alchemy.com/v2/SMfUKiFXRNaIsjRSccFuYCq8Q3QJgks8"
6 | provider = Web3(Web3.HTTPProvider(url))
7 |
8 | with open("setup.json") as f: #json file with the contract ABI
9 | setup_json = json.load(f)
10 |
11 | setup = provider.eth.contract(address=setupContract, abi = setup_json)
12 |
13 | print(setup.functions.enterVenue().call())
--------------------------------------------------------------------------------
/docs/getStarted/writing-method.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - نحوه نگارش
4 | - قالب
5 | - رایتاپ نویسی
6 | - Markdown
7 | ---
8 |
9 | # نگارش رایتاپ
10 |
11 | شاید برای شما سوال شود که writeup چیست و نوشتن آن چه تاثیری خواهد داشت. writeup یا معادل فارسی آن "**نگاشته** یا **نوشته**" در دنیای امنیت، **گزارشی از نحوه حل مسئله** است که نویسنده گام به گام رویدادها و آزمایشات خود را برای حل یک چالش امنیتی بیان میکند. این گزارش علاوه بر اینکه کمک بسیاری به خوانندگان و افزایش تجربه آنها در حل مسائل جدید میکند میتواند باعث افزایش درک خود نویسنده از آن چالش نیز شود.
12 |
13 | این بخش به عنوان نکات نگارشی در رایتاپ نویسی توسط تیم پیشنهاد میشود تا نوشتهها به صورت یک شکل، منظم و استاندارد ارائه شوند. برای نگارش، نویسنده باید از فرمت ایجاد متن [Markdown](https://en.wikipedia.org/wiki/Markdown) یا به اختصار md استفاده کند که نحوه نگارش در این فرمت همراه با عناصر آن و مثال در [اینجا](https://flagmotori.github.io/writeups/getStarted/template/) توضیح داده شده است.
14 | البته با خواندن چند رایتاپ قالب نوشتاری مناسب را متوجه خواهید شد.
15 | با این حال لازم است که موارد زیر را در هنگام نگارش نوشتهی خود لحاظ کنید:
16 |
17 | - نیاز نیست نحوه بیان رایتاپ حتما شکلی رسمی مانند مقالات علمی داشته باشد. شما میتوانید از بیانی دوستانه و صمیمی برای نگارش رایتاپ خود استفاده کنید.
18 | - نویسنده باید قوانین مربوط به سرقت ادبی را رعایت کند. در غیر این صورت عواقب آن متوجه خود نویسنده خواهد بود.
19 | - محدودیتی در طول و حجم رایتاپ وجود ندارد.
20 | - سعی کنید نوشتهای کامل و گامبهگام را ارائه دهید تا خواننده بتواند مراحل حل چالش راحتتر درک کند.
21 | - استفاده از تصاویر و جداول می تواند به درک خواننده از مراحل حل چالش کمک بسیاری کند.
22 | - برچسب گذاری (Tag) رایتاب بسیار مهم است و توصیه میشود که برچسبها را به ترتیب از مفهوم کلانتر به کوچکتر قرار دهید. همچنین برچسب برای نام مسابقه CTF و سال آن مسابقه در نظر بگیرید. به عنوان نمونه:
23 |
24 | $~~~~~~$ primes ،Factorization ،RSA ،Crypto ،ASIS-2023 ،ASIS-CTF
25 |
26 | - عنوان رایتاپ را براساس نام چالش انتخاب کنید.
27 | - نام نویسنده را در انتهای رایتاپ به عنوان یک یادداشت قرار داده شود.
28 |
29 | ---
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: fontawesome/regular/flag
3 | ---
4 |
5 | # سخن آغازین
6 | به صفحه نوشتههای مرتبط با CTF خوش آمدید.
7 | در حال حاضر، این **نسخه آزمایشی** صفحه نوشتههای اعضا تیم است. امیدواریم که این سایت گامی هرچند اندک در جهت ارتقاء دانش و آگاهی علاقهمندان به حوزه امنیت سایبری در این سرزمین باشد.
8 |
9 | امروزه درونمایه نوشتاری حوزه امنیت سایبری اغلب به زبان انگلیسی است. از آنجایی که ممکن است مطالعه محتوای انگلیسی برای بسیاری از افراد دشوار باشد، تصمیم گرفتیم نحوه حل چالشها را به زبان فارسی منتشر کنیم تا مخاطبین راهحل چالشهای مسابقات CTF را بهتر درک کنند. زیرا بر این باوریم که ارائه این نوشتهها و در دسترس قرار دادن آنها برای همگان، میتواند کمبود منابع فارسی در زمینه امنیت را تا حدی جبران کند.
10 | اگر شما نیز علاقهمند به همکاری با ما هستید، میتوانید نوشتههای خود در زمینه امنیت سایبری، بهویژه در حوزه CTF را برای ما ارسال کنید. برای این کار کافیست به [این صفحه](getStarted/contribution.md) مراجعه و آن را مطالعه کنید.
11 |
12 | علاوه بر این، کوشیدیم تا بستری جذاب را برای خواندن این نوشتهها فراهم کنیم. بدین منظور امکان سفارشیسازی برخی قسمتها در سایت تعبیه شده تا تجربه متفاوتی از مطالعه را بر اساس سلیقه شخصی خود شکل دهید. برای شخصیسازی سایت میتوانید به [این صفحه](getStarted/customization.md) بروید.
13 |
14 |
--------------------------------------------------------------------------------
/docs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/logo.png
--------------------------------------------------------------------------------
/docs/misc/Tools/index.md:
--------------------------------------------------------------------------------
1 | # ابزار متفرقه
2 |
3 |
4 | [Steganography](https://blackarch.org/stego.html)
5 |
--------------------------------------------------------------------------------
/docs/misc/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: material/diversify
3 | ---
4 | # متفرقه
5 |
6 | متفرقه؟
7 |
8 | یعنی چی؟ :joy:
9 |
10 | هر چلنجی که یکم از دسته بندی های مرسوم دور باشه، یا ترکیبی از چند تا دسته بندی باشه اینجا قرار میگیره و ما هم که بهشون رحم نمیکنیم :sunglasses:
11 |
12 | تو این دسته باید انتظار همه چیز رو داشته باشیم
13 | از ریورس بگیر تا کریپتو
14 | از استگانوگرافی بگیر تا شبکه
15 |
16 | ولی خوب چون یکم از دسته بندی های اصلی دور شدن، راحت تر میشه حلشون کرد اما خوب ترکیبین
17 |
18 | ابزار خاصی نمیشه معرفی کرد براشون
19 |
20 | یا حداقل ابزاری که تو بقیه زمینه ها استفاده میشن (و تو همین بلاگ بهشون اشاره شده) رو باید اینجا به کار گرفت بعلاوه یه چند تا ابزار که برای استگانوگرافی و یه چند تا زمینه دیگه استفاده میشن
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/BackdoorCTF/Fruit-Basket.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BackdoorCTF
4 | - BackdoorCTF-2023
5 | - Begineer
6 | - C
7 | - Random
8 | ---
9 |
10 | [آرشیو چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/BackdoorCTF/2023/misc/Fruit_Basket)
11 |
12 | ```c linenums="1"
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 |
19 | int main()
20 | {
21 | unsigned int v3; // eax
22 | char *fruits[10] = {"Apple", "Orange", "Mango", "Banana", "Pineapple", "Watermelon", "Guava", "Kiwi", "Strawberry", "Peach"};
23 |
24 | int i; // [rsp+Ch] [rbp-24h]
25 |
26 | v3 = time(0);
27 | srand(v3);
28 |
29 | usleep(4000000);
30 |
31 | for (i = 0; i <= 49; ++i)
32 | {
33 | printf("%s\n", fruits[rand() % 10]);
34 | }
35 | printf("cat flag.txt\n");
36 | return 0;
37 | }
38 | ```
39 | این کد که از رو سورس چلنج دراومده رو کامپایل میکنیم و چون سید رندوم روی تایم ست شده، رندوم های سمت سرور و کلاینت برابر ان
40 |
41 | با دستور زیر اجرا میکنیم و به nc پایپ میکنیم
42 | ```bash
43 | ./main|nc 34.70.212.151 8006
44 | ```
45 | ---
46 | !!! نویسنده
47 | [SafaSafari](https://twitter.com/SafaSafari3)
48 |
49 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/BackdoorCTF/Secret-of-Kurama.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BackdoorCTF
4 | - BackdoorCTF-2023
5 | - Begineer
6 | - JWT
7 | - Crack
8 | ---
9 |
10 | اول کار jwt که بهمون داده رو با hashcat میزنیم رو کرک با پسورد لیست rockyou
11 |
12 | ```bash
13 | hashcat eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Ik5hcnV0byIsInJvbGUiOiJzaGlub2JpIn0.WJv_YcVsRV15PqzGpq10-w5i2mJ_BI1mBzkZMtAPnIQ -m 16500 -w 2 rockyou.txt
14 | ```
15 | پسورد کرک میشه `minato`
16 |
17 | ```json
18 | {
19 | "username": "Naruto",
20 | "role": "NineTails"
21 | }
22 | ```
23 | بعد این جیسون رو با کد jwt ساین میکنیم و میفرستیم سمت سرور
24 |
25 | !!! نویسنده
26 | [SafaSafari](https://twitter.com/SafaSafari3)
27 |
28 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/PingCTF/internet-cat.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - PingCTF
4 | - PingCTF-2023
5 | - Misc
6 | ---
7 |
8 | Challenge :
9 |
10 | ```
11 | aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS90b21lazc2NjcvOTIzOTNhNTkyMDdkOTEzNzlmOWVlODc4NTg3OGI5OGIvcmF3LzNiNTM1NzJjMzQ0NTY0ZjMyMTE5NjA5MmMzMzg2M2EzODVjMTM2M2QvZ2lzdGZpbGUxLnR4dA==
12 | ```
13 |
14 | Solve :
15 |
16 | ```
17 | base64 in binary file -> gist file -> revisions -> octal (\n) -> base64 -> hex -> base58 -> png -> qr code -> privatebin -> base64 -> zip -> password crack (billabong) -> extract with 7z
18 | ```
19 |
20 | !!! نویسنده
21 | [SafaSafari](https://twitter.com/SafaSafari3)
22 |
23 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/PingCTF/ping-arcade.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - PingCTF
4 | - PingCTF-2023
5 | - Misc
6 | - Game_Hacking
7 | - Random
8 | ---
9 |
10 | [آرشیو چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/pingCTF/2023/misc/ping_arcade)
11 |
12 | با ریورس های فراوون میرسیم به یه نوع ساخت رندوم که خوشبختانه پروژه پایتون هم دارن
13 | تو این لینک
14 |
15 | https://github.com/mobaradev/UnifiedRandom
16 |
17 | ```python linenums="1"
18 | import random
19 | import requests
20 | import UnifiedRandom
21 |
22 | headers = {
23 | "User-Agent": "UnityPlayer/2022.3.12f1 (UnityWebRequest/1.0, libcurl/8.1.1-DEV)",
24 | "X-Unity-Version": "2022.3.12f1",
25 | }
26 | code = requests.get(
27 | "https://ping-arcade.knping.pl/start-game", headers=headers
28 | ).json()["accessCode"]
29 | t = []
30 | rand = UnifiedRandom(code)
31 | randb = UnifiedRandom(code)
32 | randc = UnifiedRandom(code)
33 | for i in range(64):
34 | pulse = rand.get_number(0, 25) / 100.0
35 | rate = randb.get_number(8, 25) / 100.0
36 | block_index = randc.get_number(0, 5)
37 | t.append(rate * block_index + pulse)
38 |
39 | times = "-".join(list(map(str, t)))
40 | print(
41 | requests.post(
42 | "https://ping-arcade.knping.pl/verify-game",
43 | headers=headers,
44 | # proxies=proxies,
45 | data={
46 | "accessCode": code,
47 | "times": times,
48 | "controlNumber": randc.get_number(0, randc.get_number(0, 10000)) * 1.25 * 64,
49 | },
50 | ).json()
51 | )
52 | ```
53 |
54 | !!! نویسنده
55 | [SafaSafari](https://twitter.com/SafaSafari3)
56 |
57 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/PingCTF/wow.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - PingCTF
4 | - PingCTF-2023
5 | - Misc
6 | - Random
7 | ---
8 |
9 | [آرشیو چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/pingCTF/2023/misc/wow)
10 |
11 | به محض وصل شدن به سرور یه تعداد رندوم به سمت ما ارسال میشه که میتونیم با اون رندوم ها سید رو تشخیص بدیم و ادامه ماجرا =))
12 | ```python linenums="1"
13 | from pwn import *
14 | import random
15 |
16 | a = remote("57.128.196.218", 20001)
17 |
18 | a.sendline(b'y')
19 | a.recvuntil(b'user_balance=')
20 | def get_randoms(n: int):
21 | randoms = []
22 | while len(randoms) < n:
23 | a.sendline(b'1')
24 | for line in a.recvuntil(b'user_balance=').decode().split('\n'):
25 | if 'rolls' in line:
26 | randoms.append(line.split('rolls ')[1])
27 | randoms.append('END')
28 | return randoms
29 |
30 | first = 100
31 | rands = get_randoms(30)
32 | correct = 0
33 | for i in range(10_000_001):
34 | random.seed(i)
35 | for j in rands:
36 | if j == 'END':
37 | first = 100
38 | elif int(j) == random.randint(1, first):
39 | correct += 1
40 | first = int(j)
41 | else:
42 | correct = 0
43 | if correct > 10:
44 | break
45 |
46 | def i_will_win(number = 100, user = 'Safa'):
47 | if user == 'Safa':
48 | user = 'opponent'
49 | else:
50 | user = 'Safa'
51 | a = random.randint(1, number)
52 | if a == 1:
53 | return False if user == 'Safa' else True
54 | return i_will_win(a, user)
55 |
56 | balance = int(a.recvline().decode())
57 | while balance < 10_000_000:
58 | opponent_balance = 10_000_000 + 50 - balance
59 | if i_will_win():
60 | print(balance)
61 | a.sendline(str(min(balance, opponent_balance)).encode())
62 | balance *= 2
63 | else:
64 | a.sendline(b'1')
65 | balance -= 1
66 |
67 | print(a.clean(2))
68 | ```
69 |
70 | !!! نویسنده
71 | [SafaSafari](https://twitter.com/SafaSafari3)
72 |
73 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2023/PingCTF/you-spin-me-round.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - PingCTF
4 | - PingCTF-2023
5 | - Misc
6 | - Random
7 | ---
8 |
9 | [آرشیو چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/pingCTF/2023/misc/you_spin_me_round)
10 |
11 | اینم مثل قبلی، یه تعداد beep و boop دریافت میکنیم و میتونیم سید رو تشخیص بدیم
12 | ```python linenums="1"
13 | from pwn import *
14 |
15 | p = remote("57.128.196.218", 20000)
16 |
17 | p.recvuntil(b"\n\n")
18 | s = p.recvline().decode()
19 | a, b = s.count("BEEP"), s.count("BOOP")
20 | p.recvuntil(b"Task")
21 | p.recvuntil(b": ")
22 | s = p.recvline().decode().strip()
23 | split = s.split(' ')
24 | for i in range(1_000_000):
25 | random.seed(i)
26 | if random.randint(1, 100) == int(a):
27 | if random.randint(1, 100) == int(b):
28 | if random.randint(100, 10000) == int(split[0]):
29 | if int(split[0]) // random.randint(1, 100) == int(split[4]):
30 | p.sendline(str(int(split[0]) // int(split[4])).encode())
31 | break
32 |
33 | def task1():
34 | random.randint(100, 10000)
35 | return str(random.randint(1, 100)).encode()
36 |
37 | def task2():
38 | random.randint(100000, 1000000000)
39 | return str(random.randint(1, 100000) / 100).encode()
40 |
41 | def task3():
42 | x = random.randint(100000, 1000000000) / 100
43 | y = random.randint(1, 100000) / 100
44 | p1, p2 = str(x % y).split('.')
45 | ans = f"{p1}{p2[0]}.{p2[1:]}e-1"
46 | return ans.encode()
47 |
48 | task = 1
49 | p.sendline(task2())
50 | p.sendline(task3())
51 | for i in range(996):
52 | print(i, end='\r')
53 | t = random.randint(1, 3)
54 | p.sendline(eval(f"task{t}()"))
55 |
56 | print(p.clean(2))
57 | ```
58 |
59 | !!! نویسنده
60 | [SafaSafari](https://twitter.com/SafaSafari3)
61 |
62 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/DUCTF/intercept_cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/DUCTF/intercept_cover.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/DUCTF/recipe.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - DownUnderCTF
4 | - DownUnderCTF-2024
5 | - Misc
6 | ---
7 |
8 | # چالش Wacky Recipe
9 | ---
10 |
11 |
14 |
15 | فایل تکست ضمیمهشده به چالش یک متن با فرمت یک دستور آماده کردن غذا به نظر میاد در نگاه اول. بعد از اینکه نشد یک الگوی مناسب از داخل این دستور پیدا کنیم، سراغ سرچ توی گوگل میریم.
16 |
17 | ```
18 | Chicken Parmi.
19 |
20 | Our Cyber Chef has been creating some wacky recipes recently, though he has been rather protective of his secret ingredients.
21 | Use this Chicken Parmi recipe and decipher the missing values to discover the chef's secret ingredient!
22 | This recipe produces the flag in flag format.
23 |
24 | Ingredients.
25 | 27 dashes pain
26 | 21 cups effort
27 | 1 cup water
28 | 4 kg bread crumbs
29 | 26 ml hot canola oil
30 | 13 kg egg yolks
31 | 24 teaspoons all purpose spices
32 | 7 teaspoons herbs
33 | 26 kg flour
34 | 26 kg sliced chicken breasts
35 | 1 dashes salt
36 | 11 dashes pepper
37 | 7 dashes pride and joy
38 | 10 kg tomato sauce
39 | 14 g cheese
40 | 13 kg ham
41 | 2 g pasta sauce
42 | 6 dashes chilli flakes
43 | 5 kg onion
44 | 9 dashes basil
45 | 19 dashes oregano
46 | 10 dashes parsley
47 | 20 teaspoons sugar
48 |
49 | Cooking time: 25 minutes.
50 |
51 | Pre-heat oven to 180 degrees Celsius.
52 |
53 | Method.
54 | Put water into 1st mixing bowl.
55 | Add water to 1st mixing bowl.
56 | Add water to 1st mixing bowl.
57 | Add water to 1st mixing bowl.
58 | Combine pain into 1st mixing bowl.
59 | Remove bread crumbs from 1st mixing bowl.
60 | Add effort to 1st mixing bowl.
61 | Put water into 1st mixing bowl.
62 | Add water to 1st mixing bowl.
63 | Combine pain into 1st mixing bowl.
64 | .
65 | .
66 | .
67 | ```
68 |
69 | بعد از کمی سرچ متوجه میشیم که Chef یک زبان برنامهنویسی esoteric هست که با وجود این شکل عجیب غریبش حتی تورینگ-کامپلت هم هست و اساس کارش دادهساختار استک هست. میتونید برای مطالعه بیشتر به [این لینک](http://progopedia.com/language/chef/) مراجعه کنید. قبل از اینکه بتونیم رانش کنیم باید دو مقدار pain و effort رو به جای علامت سوال با مقدار عددی درست جایگزین کنیم. میشه بروتفورس کرد اما کار هوشمندانهتر اینه که چون بر اساس استک هست و عملیاتهای استفادهشده روی متغیرها هم همشون خطی هستند و ما دو حرف اول فلگ یعنی D و U رو میدونیم، یک دو معادله و دو مجهول تشکیل بدیم و مقادیر مناسب مجهولات رو پیدا کنیم که به ترتیب pain مقدار ۲۷ و effort مقدار ۲۱ داره. نهایتا بعد از جایگذاری این مقادیر در کد اصلی و ران کردنش به صورت [آنلاین](https://esolangpark.vercel.app/ide/chef) حروف فلگ قابل مشاهده است.
70 |
71 |
14 |
15 | فایل اکسل ضمیمه چلنج رو که باز میکنیم، میبینیم که در ستون اول یکسری زمان متوالی، در ستون دوم حروف a, b, c, d, e, f در گروههای دوتایی و ششتایی و در ستون سوم در برخی از سطرها DP نوشته شده. در نگاه اول شاید چیز آشنایی به چشم نیاد.
16 |
17 |
18 | 
19 |
20 |
21 | با سرچ کردن abcdef DP در گوگل میفهمیم که اینها در واقع pinout های یک مدار 7segment هستند که همون مدار نمایش ارقام دهدهی دیجیتال هستند و در واقع با توجه به اینکه هر pin مسئول روشنکردن کدام بخش هست میفهمیم که توالی abcdef عدد 0 و توالی bc عدد ۱ و DP یک نقطه را نشان میدهد.
22 |
23 |
24 | 
25 |
26 |
27 | یک اسکریپت پایتون مینویسیم که این اکسل را به یکسری صفر و یک متوالی تبدیل کند. سپس با بررسی ۸ بیت اول و ۸ بیت دوم مشاهده میکنیم که در واقع هر ۸ بیت کد اسکی یک حرف از فلگ را نشان میدهد. بنابراین بعد از تجزیه ۸ بیتی و تبدیل به حروف اسکی، به فلگ نهایی میرسیم.
28 |
29 | ```python
30 | import pandas as pd
31 |
32 | df = pd.read_excel('output.xlsx', header=None)
33 |
34 | result = []
35 |
36 | for i in range(len(df)):
37 | if df.iloc[i, 2] == 'DP':
38 | if df.iloc[i-3, 2] == 'DP':
39 | start = max(0, i - 2)
40 | else:
41 | start = max(0, i - 6)
42 | sequence = ''.join(df.iloc[start:i, 1].dropna().tolist())
43 | print(sequence)
44 |
45 | if sequence == 'abcdef':
46 | result.append('0')
47 | elif sequence == 'bc':
48 | result.append('1')
49 |
50 | binary_string = ''.join(result)
51 | ascii_text = ''.join(chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8))
52 |
53 | print("Flag:", ascii_text)
54 | ```
55 |
56 | فلگ زیر پس از اجرای کد به نمایش در میآید.
57 |
58 | ---
59 | ??? success "FLAG :triangular_flag_on_post:"
60 |
`OSCTF{1nf0_d1spl4c3d}`
61 |
62 |
63 | !!! نویسنده
64 | [Sadegh](https://github.com/sadegh-majidi)
65 |
66 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/OSCTF/captured_data_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/OSCTF/captured_data_1.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/OSCTF/captured_data_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/OSCTF/captured_data_2.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/OSCTF/captured_data_cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/OSCTF/captured_data_cover.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/SP1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/SP1.PNG
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/SP2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/SP2.PNG
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/bandy-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/bandy-1.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/bandy-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/bandy-2.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/bandy-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/bandy-3.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/bandy-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/bandy-4.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/bandy.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Misc
6 | - Forensics
7 | - VIM
8 | - SWP
9 | - PNG
10 | ---
11 |
12 | 
13 |
14 | از من به شما نصیحت هرجا vim دیدید، برید سمت swp فایل ها =))
15 |
16 | 
17 |
18 | 
19 |
20 | طبق تصویری که توسط برنامه bless نشان داده شده، میبینیم که قسمت [مجیک بایت](https://en.wikipedia.org/wiki/List_of_file_signatures) دو فایل با هم فرق داره
21 |
22 | بعد از سر و کله زدن های فراوون برای تغییر فرمت و مسیر فایل ها توسط من و وحید جان و ناکامی در این زمینه، نیما جان بهمون گفت:
23 | > چه نیازیه کل بایت ها رو تبدیل کنیم؟
24 | >
25 | > دو بایت اول کافیه!!
26 |
27 | ```
28 | vim -r .bandy.swp
29 | ```
30 |
31 | با زدن این کامند و رد کردن وارنینگی که داده، میتونیم به فایل اصلی برسیم
32 |
33 | در این قسمت باید فایل رو سیو کنیم
34 |
35 | با دستور
36 |
37 | ```
38 | :w a.png
39 | ```
40 |
41 | میتونیم فایل رو سیو کنیم جایی که میخوایم (نه جایی که آقای فاکتوریل زده :joy:)
42 |
43 | در آخر برای این که از فیکس کردن png زیر سیبیلی رد شیم، میتونیم از [سایبرچف](https://gchq.github.io/CyberChef) استفاده کنیم
44 |
45 | 
46 |
47 | ??? success "FLAG :triangular_flag_on_post:"
48 |
`SNAPP{D0n7_Op3n_8!NarY_FII35_W1tH_VIM!!}`
49 | ---
50 | !!! نویسنده
51 | [SafaSafari](https://twitter.com/SafaSafari3)
52 |
53 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/prying-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/prying-1.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/prying-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/prying-2.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/prying-eyes.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Misc
6 | - Unlambda
7 | - Lambda
8 | ---
9 |
10 | 
11 |
12 | همونطور که از توضیحات چلنج معلومه که یا باید دنبال λ (Lambda) بگردیم، یا هم دنبال یه انکدینگی چیزی به اسم (prying eyes)
13 |
14 | که با کمی سرچ کردن میرسیم به ([Unlambda](https://en.wikipedia.org/wiki/Unlambda))
15 |
16 | و یه [کامپایلر آنلاین](https://www.tutorialspoint.com/execute_unlambda_online.php) براش پیدا میکنیم
17 |
18 | 
19 |
20 | ??? success "FLAG :triangular_flag_on_post:"
21 |
`SNAPP{1st:__SNAPP__theSEC&CTF}`
22 | ---
23 | !!! نویسنده
24 | [SafaSafari](https://twitter.com/SafaSafari3)
25 |
26 |
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/recordtripSnapppey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/recordtripSnapppey.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/snapp customer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/snapp customer.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/snapp saving.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/snapp saving.PNG
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/snapp-bounties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/snapp-bounties.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/snapp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/snapp.jpg
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/snapprecord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/snapprecord.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/SnappCTF/superapp-user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/SnappCTF/superapp-user.png
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/bad_invaders.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/bad_invaders.zip
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/gif/game.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/gif/game.gif
--------------------------------------------------------------------------------
/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/gif/solution.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/misc/writeups/2024/TFCCTF/bad-invaders-files/gif/solution.gif
--------------------------------------------------------------------------------
/docs/osint/Tools/4d3067a845564768086078f1c275c7c6db9ff3e6143ea33b6c676cb5475a3abb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/Tools/4d3067a845564768086078f1c275c7c6db9ff3e6143ea33b6c676cb5475a3abb.jpg
--------------------------------------------------------------------------------
/docs/osint/Tools/65f9760110f28e0bcfc60cc7_Untitled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/Tools/65f9760110f28e0bcfc60cc7_Untitled.png
--------------------------------------------------------------------------------
/docs/osint/Tools/988254111-stalking.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/Tools/988254111-stalking.jpg
--------------------------------------------------------------------------------
/docs/osint/Tools/sherlock-image-sherlock-36402097-1280-720.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/Tools/sherlock-image-sherlock-36402097-1280-720.jpg
--------------------------------------------------------------------------------
/docs/osint/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: material/incognito
3 |
4 | tags:
5 | - OSINT
6 | - اطلاعات منبعباز
7 | ---
8 | # اطلاعات منبعباز (OSINT)
9 |
10 | اینترنت امروز به واسطه گسترش شبکههای اجتماعی، رسانهها، سایتهای سازمانی و شخصی یک منبع اطلاعاتی بزرگ است. اطلاعات منبعباز (𝙾𝚂𝙸𝙽𝚃) که سرنام عبارت 𝙾𝚙𝚎𝚗 𝚂𝚘𝚞𝚛𝚌𝚎 𝙸𝚗𝚝𝚎𝚕𝚕𝚒𝚐𝚎𝚗𝚌𝚎 است به اطلاعاتی گفته میشود به صورت آشکار و رایگان در فضای وب در دسترس همگان قرار دارد که با اندکی کنکاش میتوان به آنها دست یافت.
11 |
12 | این اطلاعات مثل نام فرد و شغل آن بخودی خود اطلاعات محرمانهای نیستند، اما میتوانند به نتیجهگیری و به کار بردن آنها برای یک هدف خاص کمک کنند. به عنوان مثال، از روی عکسهای پروفایل اینستاگرام یک شخص میتوان نتیجه گرفت که او به گردش در طبیعت علاقه دارد، پس میتوان یک بدافزار به شکل یک عکس از طبیعت، شخص را وادار به اجرای آن کرد. با جمعآوری و استدلال روی این اطلاعات، یک مهاجم میتواند حملههای سایبری هدفمندتری را روی یک شخص یا سازمان پیاده کند.
13 |
14 |
15 |
16 | 
17 |
18 |
19 | ### OSINT در مسابقات CTF:
20 | OSINT یک دسته از چالشهای در CTF است که در چند سال اخیر بخاطر گسترش دادههای موجود در وب و کمک آن به شناسایی (Recon) هدف به این مسابقات اضافه شده است.
21 | در این نوع از چالشها فرد باید مانند یک کاراگاه، اطلاعات مختلف در رابطه با یک موضوع را کنار هم بچیند و سرنخهای مختلف را دنبال کند تا به هدف چالش یعنی پیدا کردن پرچم (Flag) برسد. در این راه میتوان از ابزارهای مختلف مانند موتورهای جستجو، شبکههای اجتماعی، وبسایتها و شواهد موجود در تصاویر بهره ببرد تا فلگ را پیدا کند.
--------------------------------------------------------------------------------
/docs/osint/osint.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/osint.jpg
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/1.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/2.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/3.jpg
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/4.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/5.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/challenge cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/0xL4ughCTF/challenge cover.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/0xL4ughCTF/cheater.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - 0xL4ughCTF
4 | - 0xL4ughCTF-2024
5 | - Osint
6 | - instagram
7 | - archive.ph
8 | - gmail
9 | - Ghunt
10 | ---
11 |
12 | # چالش Cheater
13 |
14 | ---
15 |
16 |
19 |
20 | 1- اسم Hamdia Eldhkawy در گوگل جستجو کردم که بعد تعدادی صفحه اینستاگرام، به [این](https://www.instagram.com/hamdia_elhob_kolo) آدرس رسیدم.
21 |
22 |
23 |
24 | 
25 |
26 |
27 | 2- اسم اکانت hamdia_elhob_kolo در موتور جستجو DuckDuckgo جستجو کردم به یک فروم OpenAI می رسیم که عکس زیر آنجا بود.
28 |
29 |
30 | 
31 |
32 |
33 | 3- در متن کنار این عکس یک به نظر یک اکانت spider@ هست که اون رو زیاد جستجو کردم که نتیجه نداشت. بعد، آدرس url موجود در عکس جستجو کردم که فهمیدم این عکس اینستاگرام حذف شده است. توی سایتهای آرشیو دنبال url گشتم که در سایت [archive.ph](https://www.archive.ph) زیر این صفحه ثبت شده بود. پس تکمیل شده اکانت spidersh4zly@ بدست آوردیم.
34 |
35 |
36 |
37 | 
38 |
39 |
40 |
41 | 4- اسم اکانت spidersh4zly@ جستجوکردم که به مارو به صفحه اینستا زیر می بره.
42 |
43 |
44 | 
45 |
46 |
47 | 5- آدرس url داخل این صفحه رو که بزنیم به صفحه زیر میریم که اکانت های توییتر، فیس بوک و یک آدرس جیمیل (spidersh4zly4love@gmail.com) در اونجا هست.
48 |
49 |
50 |
51 | 
52 |
53 |
54 | 6- حالا با استفاده از ابزار [Ghunt](https://github.com/mxrch/GHunt) اطلاعات مربوط به این ایمیل را بدست آوردیم که اسم و فامیل صاحب این ایمیل هم بدست آمد.
55 |
56 | ---
57 | ??? success "FLAG :triangular_flag_on_post:"
58 |
15 |
16 | خب طبق خواسته سوال ما باید ببینیم در چه تاریخ و ساعتی قطار بین دو شهر Omotesando و Suitengumae تاخیر داشته
17 |
18 | ## راهحل
19 |
20 | خب با اندکی جستجو و بررسی سایتهای مختلف متوجه شدم اول که این دو اسم شهر نیستن و اسم دو ایستگاه مترو خط Z توکیو هستند.
21 |
22 |
25 |
26 | دوباره با جستجو با کلید واژه "daley" به دنبال سایتی بودم که اطلاعات مربوط به تاخیرهای قطار رو به ما بده که در نهایت به [این](https://www.tokyometro.jp/lang_en/delay/history/hanzomon.html) سایت رسیدم.
27 | شروع به گشتن توی این سایت کردم در تاریخ 5 نوامبر تاخیر 61 دقیقه ای داشته که فکر کردم کار تموم است ولی جواب درست نبود :cry:
28 |
29 |
30 |
31 | { width="500" }
32 |
33 |
34 | عجیب بود برام و تاریخها و ساعتهای همین حوالی رو امتحان کردم ولی درست نبود. بعد از مدتی چشم به تاریخ 2017 افتاد دیدم که کلا فراموش کردم که باید در این تاریخ دنبال تاخیر میگشتم اما این سایت تنها تاخیرهای 35 روز گذشته رو ذخیره داره
35 |
36 | پس رفتم به توی سایت [آرشیو](https://www.tokyometro.jp/lang_en/delay/history/hanzomon.html) همین لینک قبلی رو اونجا دنبال کردم ه دیدم بله توی سال 2017 چند تا مورد آرشیو ثبت شده از این سایت و تاخیرهاش هست
37 |
38 |
39 | { width="500" }
40 |
41 |
42 | همه این تاریخهایی که توی سایت آرشیو بود هم بررسی کردم ولی توی هیچ کدام مقدار 61 دقیقه تاخیر وجود نداشت.:cry:
43 | باز یک مدت زمانی دنبال این بودم که چه چیزی رو از قلم انداختم تا اینکه متوجه شدم با لینک بدون زبان انگلیسی (ینی زبان ژاپنی سایت ) هم تاریخهای متفاوتی از نسخه انگلیسی وجود دارد. پس
44 |
45 |
46 | { width="500" }
47 |
48 |
49 | در نهایت در تاریخ 20 فوریه همانند شکل زیر یک تاخیر 61 دقیقهای در ساعت 17 وجود دارد که بلاخره درست بود.
50 |
51 |
54 |
55 |
56 |
57 |
58 | !!! جالب
59 | در همین سایتی که اطلاعات تاخیر قطارها در ژاپن قرار گرفته قابلیت اینکه تاخیر آن روز را پرینت بگیرید لحاظ شده تا در صورتی که به کار خود نرسیدید بتوانید به عنوان علت تاخیر آن را ارائه دهید
60 |
61 |
62 | ---
63 | ??? success "FLAG :triangular_flag_on_post:"
64 |
16 |
17 | ## صورت مسئله
18 | در این چالش یک لینک داده شده و بنظر باید با استفاده از این لینک به خواسته مسلله یعنی پرچم برسیم
19 |
20 | ## راهحل چالش
21 | توی این چالش با اینکه گفته شده که برای پیدا کردن فلگ نباید دنبال آن در اکانت های توییتر خود گروه Wolphv باشیم ولی با یک جستجو توی اینترنت در مورد این باجافزار به یک [توییت](https://twitter.com/FalconFeedsio/status/1706989111414849989) بر میخوریم که در مورد این باج افزار توییتی زده.
22 |
23 |
24 |
33 |
34 | این سوال سادهای بود اما نکته گمراه کننده این بود که در توضیحات چالش گفته بود که نباید به توییتر توجه کرد.
35 |
36 | ---
37 | ??? success "FLAG :triangular_flag_on_post:"
38 |
16 |
17 | ## صورت مسئله
18 | این سوال در ادامه چالش قبلی یعنی WOLPHV-II است که در آن به توانستیم دیسکورد آن ها را بدست بیاوریم.
19 |
20 |
21 | ## راهحل چالش
22 |
23 | بعد از اینکه تونستیم به سرور دیسکورد گروه در چالش قبلی وارد بشیم برای این سوال مختصات آدرس آپارتمان اکانت p1nesh4dow48 از ما میخواد که داخل سرور این گروه همین شخص عکس آپارتمانش رو گذاشته است.
24 |
25 |
28 |
29 | خب برای حل این چالش اولین چیزی که به ذهنم رسید این بود که داخل google image دنبال این عکس بگردم که با حالت ها و تکه های مختلف عکس با google lenz جسجو کردم ولی فایدهای نداشت و آپارتمان ها هیچکدوم این اپارتمان نبود.
30 |
31 |
32 | 
33 |
34 |
35 | با دقت به عکس یک تابلو سمت چپ عکس میبینیم که نوشته شده```Pine Ridge visitor parking only``` که ذهنم برد به سمت اینکه ممکنه احتمالا ```Pine ridge```یک مکان دیدنی باید باشه که مردم برای بازدید به اونجا میان و این آپارتمان نزدیک اونه. پس توی اینترنت چند ساعت دنبال این مکان دیدنی گشتم ولی فایده نداشت. بعد از مدتی، داخل google Map کلمات کلیدی ```Pine Ridge apartments michigan``` چون حدس زدم اسم آپارتمان شاید این باشه و چون در رابطه دانشگاه میشگان بودن این افراد که نقاط عکس زیر به ما نشون داد یکی از اونها شباهت به همین آپارتمان موردنظر داشت بعد که وارد [street view](https://www.google.com/maps/@46.546214,-87.388624,3a,75y,99.64h,72.87t/data=!3m6!1e1!3m4!1sYz6AgzjDcR_0Dy8VjBPX4w!2e0!7i16384!8i8192?hl=pt-PT&entry=ttu) شدم دیدم که بله خودشه :hand_with_index_finger_and_thumb_crossed:.
36 |
37 |
17 |
18 | ## صورت مسئله
19 |
20 | در این چالش هم باید مثل قبلی محل سکونت یکی دیگه از اعضای گروه دیسکورد یعنی d4wgbyte262 پیدا کنیم.
21 |
22 | ## راهحل چالش
23 |
24 | با توجه به صحبت های که توی گروه داشتن نشون میده که ای شخص سگ دارهو در مورد یک چیزی به اسم flick میکنند.
25 |
26 |
29 |
30 | با این اطلاعات اولین کاری که کردم این بود که ببینم آیا اکانت دیگهای با این اسم داخل شبکه های اجتماعی دیگه هست یا نه. پس در سایت [discoverprofile](https://discoverprofile.com/) اکانت این شخص جستجو کردم که نتیجه بدرد بخوری نداشت. بعد توی موتور [DuckDuckgo](https://duckduckgo.com/) هم گشتم که یک سایت به اسم [flickr](https://www.flickr.com/photos/200261418@N03/) نظرم جلب کرد و بعد که داخلش رفتم عکسهای زیاد از یک سگ به اشتراک گذاشته شده بود.
31 | پس فهمیدم که تا این جا درسته و این اکانت یک ربطی به داستان داره.:hand_with_index_finger_and_thumb_crossed:
32 |
33 |
36 |
37 | عکس ها رو بررسی کردیم که شاید نشانهای از خانه این شخص باشه ولی چیزی دستگیرم نشد. بعد چنتا از عکسها رو دانلود کردم و با ابزار exiftool اطلاعات داخل عکس نگاه کردم که دیدم یک موقعیت جغرافیایی داخل هر عکس هست.
38 |
39 | ولی متاسفانه هر عکس یک موقعیت جغرافیایی متفاوت از نقطههای مختلف شهر داشت و نمیشد موقعیت دقیق خانه بدست آورد.
40 | یک مدتی درگیر همین بودم که دوباره دیسکورد نگاه کردم و از صحبت هاشون متوجه شدم که خانهاش نزدیکترین موقعیت به یک ایستگاه آتشنشانی باید باشه.
41 |
42 |
43 |
56 |
57 |
58 | !!! نویسنده
59 | [HIGHer](https://twitter.com/HIGH01012)
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/wctf/WOLPHV-IV/challenge cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/wctf/WOLPHV-IV/challenge cover.jpg
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/wctf/WOLPHV-IV/discord chats 2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/wctf/WOLPHV-IV/discord chats 2.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/wctf/WOLPHV-IV/discord chats.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/wctf/WOLPHV-IV/discord chats.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/wctf/WOLPHV-IV/flickr account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/wctf/WOLPHV-IV/flickr account.png
--------------------------------------------------------------------------------
/docs/osint/writeups/2024/wctf/WOLPHV-IV/house coordinates.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/osint/writeups/2024/wctf/WOLPHV-IV/house coordinates.png
--------------------------------------------------------------------------------
/docs/pwn/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: material/console
3 | ---
4 | # کشف و بهرهبرداری آسیبپذیری (PWN)
5 |
6 | خب حالا بریم ببینیم که اصلا PWN یعنی چی و همچین کلمه ای از کجا میاد ؟!
7 |
8 | کلمه [PWN](https://dictionary.cambridge.org/dictionary/english/pwn) توی دیکشنری به معنی شکست دادن یا به دست آوردن کنترل کسی یا یک چیزی هست و در واقع یک واژه ای هست که در طول زمان توسط هکرها و بعضا گیمرها به وجود میاد. اگر دقت کرده باشین به کیبوردتون میبینید که دو حرف P و O توی چینش [QWERTY](https://en.wikipedia.org/wiki/QWERTY) درکنار همدیگه قرار گرفتن و احتمالا میدونین که چی میخوام بگم حالا!
9 |
10 | بله دقیقا! کلمه PWN به خاطر ی غلط املایی در پی نوشتن کلمه OWN به وجود میاد و به همین خاطره که شما وقتی PWN رو گوگل میکنید اغلب میگن که این کلمه مثل OWN تلفظ میشه یا معنی اش میشه تصاحب کردن چیزی و از این حرفا!
11 |
12 | توی مسابقات CTF هم اگه که شرکت کرده باشین یا حداقل پیش دوستاتون ی چیزایی دیده باشین متوجه شدین که یک فایل باینری یا... رو به شما میدن و ازتون میخوان که از آسیب پذیری توی این برنامه استفاده کنید تا بتونید باهاش سروری که آیپی و پورت اش در اختیارتون قرار گرفته رو تصاحب کنید و یک FLAG رو در نهایت به دست بیارین.
13 |
14 | پس داشتن دانش توی حوزه باینری و زبان های برنامه نویسی مثل Assembly و C و CPP و گاها Rust و Go، میتونه در موفتیت شما توی این مسیر خیلی کمک کننده و مهم باشه!!
15 |
16 | یکی از اهداف مهمی که این بخش توی CTF ها داره این هست که بتونه به شما [Secure Coding](https://en.wikipedia.org/wiki/Secure_coding) رو یاد بده!
17 |
18 |
21 |
22 | درسته مثال ها و چالش هایی که حل میکنید رو نمیتونید عینا به همون شکل در دنیای کامپیوتر و نرم افزار و... مشاهده کنید ولی یکی از بهترین فرصت هایی که CTF ها میتونن براتون تو این قسمت ایجاد کنن قطعا یادگیری مکانیسم ها و اقدامات کاهشی یا همون [Mitigation](https://cyberpedia.reasonlabs.com/EN/exploit%20mitigation.html) ها در ویندوز و لینوکس وغیره و شیوه های متفاوت برای دور زدن اون ها هست. علاوه بر این مهارت حل مسئله شما نیز تقویت میشه و خلاقتیتتون در مواقعی که با محدودیت رو به رو میشید رشد میکنه. در نهایت این تکه های پازل و قدم های کوچیک هستن که کنار هم دیگه جمع میشن و نتایج بزرگتری رو رقم میزنن(;
23 |
24 | در نهایت میتونید از مهارت هایی که توی این بخش به دست میارید در توسعه [Exploit](https://www.offsec.com/cyberversity/exploit-development/) استفاده کنید.
25 |
--------------------------------------------------------------------------------
/docs/pwn/pwn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/pwn.jpg
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snapp_admin1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snapp_admin1.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snapp_admin2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snapp_admin2.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snapp_admin3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snapp_admin3.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snapp_admin4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snapp_admin4.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snapp_admin5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snapp_admin5.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-1.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-2.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-3.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-4.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-5.png
--------------------------------------------------------------------------------
/docs/pwn/writeups/2024/SnappCTF/Snappshell-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/pwn/writeups/2024/SnappCTF/Snappshell-6.png
--------------------------------------------------------------------------------
/docs/reverse/Tools/binja-logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/Tools/binja-logo.jpg
--------------------------------------------------------------------------------
/docs/reverse/Tools/ghidra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/Tools/ghidra.jpg
--------------------------------------------------------------------------------
/docs/reverse/Tools/ida_pro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/Tools/ida_pro.jpg
--------------------------------------------------------------------------------
/docs/reverse/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | icon: material/cog-clockwise
3 | ---
4 | # مهندسی معکوس
5 |
6 | برنامه نویسا چیکار میکنن؟
7 |
8 | یه برنامه به زبون های مختلف مینویسن و اگه زبونی که باهاش برنامه مینویسن، کامپایلری باشه، یه کامپایلر میاد و کد هاشون رو تبدیل به زبان اسمبلی میکنه که برای انسان خوندنش خیلی سخته
9 |
10 | اینجاس که ما وارد عمل میشیم و با خوندن زبان ماشین و اسمبلی، منطق کد رو درک میکنیم
11 |
12 | فک کنم تا الان فهمیده باشین که ما انسان های عادی نیستیم
13 |
14 | ما مهندسان معکوس هستیم :fire:
--------------------------------------------------------------------------------
/docs/reverse/writeups/2023/BackdoorCTF/Sl4ydroid.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - BackdoorCTF
4 | - BackdoorCTF-2023
5 | - Reverse
6 | - Android
7 | - Frida
8 | - Hooking
9 | ---
10 |
11 | # چالش Sl4ydroid
12 |
13 | با هوک کردن تابعی که تو آدرس `0x23820` وجود داره، میتونیم به تیکه های فلگ دست پیدا کنیم
14 | ```js linenums="1"
15 | var awaitForCondition = function (callback) {
16 | var int = setInterval(function () {
17 | var addr = Module.findBaseAddress("libsl4ydroid.so");
18 | if (addr) {
19 | console.log("SO Address found:", addr);
20 | clearInterval(int);
21 | callback(addr);
22 | return;
23 | }
24 | }, 0);
25 | };
26 | awaitForCondition(function (baseAddr) {
27 | Interceptor.attach(baseAddr.add(0x23820), {
28 | onEnter: function(args) {
29 | console.log(args[0].readUtf8String())
30 | },
31 |
32 | });
33 | Interceptor.flush();
34 | });
35 | ```
36 | با ابزار فریدا میتونیم هوک رو انجام بدیم
37 | ```bash
38 | frida -U -f com.backdoor.sl4ydroid -l Sl4ydroid.js
39 | ```
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/BSidesSF/TuringComplete.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/BSidesSF/TuringComplete.PNG
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/BSidesSF/shinji-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/BSidesSF/shinji-1.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/BSidesSF/wishing-well-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/BSidesSF/wishing-well-1.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/BSidesSF/wishing-well-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/BSidesSF/wishing-well-2.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/DUCTF/jmp_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/DUCTF/jmp_1.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/DUCTF/jmp_cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/DUCTF/jmp_cover.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/DUCTF/mashing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/DUCTF/mashing.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/DUCTF/number_mashing.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - DownUnderCTF
4 | - DownUnderCTF-2024
5 | - Reverse
6 | ---
7 |
8 | # چالش number mashing
9 | ---
10 |
11 |
12 | 
13 |
14 |
15 | فایل باینری ضمیمهشده رو به دیکامپایلر میدیم و خروجی رو چک میکنیم. با حذف قسمتای غیر مهم و فقط نگه داشتن منطق اصلی برنامه، شبه کد زیر رو میبینیم.
16 |
17 | ```C
18 | undefined8 main(void)
19 |
20 | {
21 | int local_11c;
22 | int local_118;
23 | int local_114;
24 | FILE *local_110;
25 | setvbuf(_stdout,(char *)0x0,2,0);
26 | setvbuf(_stdin,(char *)0x0,2,0);
27 | printf("Give me some numbers: ");
28 | __isoc99_scanf("%d %d",&local_11c,&local_118);
29 | if (((local_11c == 0) || (local_118 == 0)) || (local_118 == 1)) {
30 | puts("Nope!");
31 | exit(1);
32 | }
33 | local_114 = 0;
34 | if (local_118 != 0) {
35 | local_114 = local_11c / local_118;
36 | }
37 | if (local_114 != local_11c)
38 | puts("Nope!");
39 | local_110 = fopen("flag.txt","r");
40 | fread(&local_108,1,0x100,local_110);
41 | printf("Correct! %s\n",&local_108);
42 | return 0;
43 | }
44 | ```
45 |
46 | در واقع این برنامه، دو عدد int32 را از کاربر ورودی میگیرد و چک میکند که آیا حاصل تقسیم عدد اول بر عدد دوم، برابر عدد اول میشود یا خیر. همچنین برای سختتر کردن کار و جلوگیری از خطای تقسیم صفر، بررسی میکنه که صورت برابر 0 و یا مخرج برابر 0 یا 1 نباشه و در غیر این صورت از برنامه خارج میشه. از دید ریاضی و در تقسیم اعداد صحیح و با فرض اینکه پاسخ همیشه به سمت 0 گرد میشود، به نظر میاد پیدا کردن همچین جفت عددی باید ناممکن باشه. اما نکته اینجاست که ما در دنیای باینری کامپیوترها، تعداد محدودی بیت داریم و از قواعد خاصی برای نمایش اعداد پیروی میکنیم. در سیستم complement 2's تعداد اعداد منفی یکی بیشتر از اعداد مثبت است و بنابراین کوچکترین عدد ۳۲ بیتی منفی یعنی 2147483648 - در این سیستم نقیض ندارد و نقیضش خودش است. دلیل این موضوع این است که در نمایش باینری این عدد، با ارزشترین بیت 1 و بقیه بیتها 0 هستند. حال هنگام نقیض کردن، همه بیتها را عکس و سپس عدد را با 1 جمع کنیم، مجددا با همان نمایش عددی میرسیم. بنابراین اگر این عدد را در ۱- ضرب و یا بر آن تقسیم کنیم، همچنان حاصل برابر خودش است. با دادن این ورودیها به برنامه ریموت روی سرور، مقدار فلگ با موفقیت به دست میآید.
47 |
48 | ---
49 | ??? success "FLAG :triangular_flag_on_post:"
50 |
`DUCTF{w0w_y0u_just_br0ke_math!!}`
51 |
52 |
53 | !!! نویسنده
54 | [Sadegh](https://github.com/sadegh-majidi)
55 |
56 |
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/ImaginaryCTF/BF.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/ImaginaryCTF/BF.PNG
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/ImaginaryCTF/unconditional.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/ImaginaryCTF/unconditional.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/Incognito_5.0/Vault.md:
--------------------------------------------------------------------------------
1 | # چالش Vault
2 |
3 | 🔗 [دانلود چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/Incognito/2024/rev/Vault)
4 |
5 |
6 | ## نگاه اولیه به سوال
7 |
8 |
9 | در این سوال فقط به ما یک فایل با نام `challenge0` داده شده بود.
10 | در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم
11 |
12 | ```bash
13 | $ file challenge0
14 | challenge0: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=050a91a2a787ea9b21439b9cae80e47848c472f7, for GNU/Linux 3.2.0, not stripped
15 | ```
16 |
17 | ## تحلیل استاتیک
18 |
19 |
20 | خب بهمون یک فایل باینری 64بیتی داده شده، برا همین در ابتدا سراغ تحلیل استاتیک میریم و به کمک سایت دوست داشتنی [dogbolt](https://dogbolt.org) سعی میکنیم برنامه رو دیکامپایل کنیم و بفهمیم برنامه مدنظر چه کاری انجام میده.
21 |
22 | ??? info "دیکامپایلر چیست؟"
23 |
24 | یک دیکامپایلر برعکس یک کامپایلر عمل می کند! باینری ها را می گیرد و آنها را به کد منبع تبدیل می کند (با درجات مختلف موفقیت بسته به کامپایلر، تنظیمات کامپایلر، زبان، معماری، پیچیدگی و بسیاری عوامل دیگر).
25 |
26 | معمولا طبق تجربه Hex-Rays دیکامپایل های بهتری میده، در نتیجه بیاید به خروجیش نگاهی بندازیم:
27 |
28 | ```c
29 | _DWORD ascii_values_1[26] = {105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, 95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125 };
30 | _BYTE flagArray_0[32];
31 |
32 | _BYTE *flag()
33 | {
34 | int i;
35 | for ( i = 0; i < 26; ++i )
36 | flagArray_0[i] = ascii_values_1[i];
37 | flagArray_0[26] = 0;
38 | return flagArray_0;
39 | }
40 |
41 | int __fastcall main(int argc, const char **argv, const char **envp)
42 | {
43 | const char *v3;
44 | const char *v4;
45 | char s1[112];
46 | printf("Enter the secret code: ");
47 | __isoc99_scanf("%99s", s1);
48 | v3 = flag();
49 | if ( !strcmp(s1, v3) )
50 | {
51 | puts("Access Granted!");
52 | v4 = flag();
53 | puts(v4);
54 | }
55 | else
56 | {
57 | puts("Access Denied!");
58 | }
59 | return 0;
60 | }
61 | ```
62 |
63 | ## حل چالش
64 |
65 |
66 |
67 | خب از سورس کد میتوان دید که برنامه از ما یک رشته ورودی میگیره و با خروجی تابع flag مقایسه میکنه.
68 | در ادامه بسادگی با کد پایتونی زیر میتونیم فلگ رو در بیاریم
69 |
70 | ```python
71 | a = [105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48,
72 | 95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125]
73 | print(''.join(map(chr, a)))
74 | ```
75 |
76 |
77 | ---
78 | ??? success "FLAG :triangular_flag_on_post:"
79 |
`ictf{welc0me_t0_rev3rs1ng}`
80 |
81 |
82 | !!! نویسنده
83 | [mheidari98](https://github.com/mheidari98)
84 |
85 |
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/Incognito_5.0/Vault_2.md:
--------------------------------------------------------------------------------
1 | # چالش Vault 2
2 |
3 | 🔗 [دانلود چلنج](https://github.com/sajjadium/ctf-archives/tree/main/ctfs/Incognito/2024/rev/Vault_2)
4 |
5 | ## نگاه اولیه به سوال
6 |
7 | در این سوال فقط به ما یک فایل با نام `challenge1` داده شده بود.
8 | در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم
9 |
10 | ```bash
11 | $ file challenge1
12 | challenge1: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d15aa18d88517442ed4cf7a958d61093c455c645, for GNU/Linux 3.2.0, not stripped
13 | ```
14 |
15 |
16 | ## تحلیل استاتیک
17 |
18 |
19 | خب بهمون یک فایل باینری 64بیتی داده شده، برا همین در ابتدا سراغ تحلیل استاتیک میریم و به کمک سایت دوست داشتنی [dogbolt](https://dogbolt.org) سعی میکنیم برنامه رو دیکامپایل کنیم و بفهمیم برنامه مدنظر چه کاری انجام میده
20 |
21 | طبق تجربه معمولا Hex-Rays(IDA Pro) دیکامپایل های بهتری خروجی میده، در نتیجه ابتدا به دیکامپایل آیدا نگاهی میندازیم و اگر بخشی از کد نامفهوم بود، به خروجی سایر دیکاپایلر ها نیز نگاهی میندازیم.
22 | خب پس بیاید به خروجی آیدا نگاهی بندازیم:
23 |
24 |
25 |
26 | ```c
27 | __int64 __fastcall mysteryFunction(__int64 a1)
28 | {
29 | __int64 result;
30 | int i;
31 |
32 | for ( i = 0; ; ++i )
33 | {
34 | result = *(unsigned __int8 *)(i + a1);
35 | if ( !(_BYTE)result )
36 | break;
37 | *(_BYTE *)(i + a1) ^= (unsigned __int8)(i % 5) + 1;
38 | }
39 | return result;
40 | }
41 |
42 | _BOOL8 __fastcall checkFlag(const char *a1)
43 | {
44 | char dest[128];
45 | char s2[32];
46 | qmemcpy(s2, "hawb~w6q5dcn0[n2", 16);
47 | *(_QWORD *)&s2[15] = 0x7F73357C5C7B32LL;
48 | strncpy(dest, a1, 0x80uLL);
49 | mysteryFunction((__int64)dest);
50 | return strncmp(dest, s2, 0x17uLL) == 0;
51 | }
52 |
53 |
54 | int __fastcall main(int argc, const char **argv, const char **envp)
55 | {
56 | char v4[128];
57 | puts("Enter the flag:");
58 | if ( (unsigned int)__isoc99_scanf("%127s", v4) )
59 | {
60 | if ( checkFlag(v4) )
61 | puts("Congratulations! You've solved the challenge.");
62 | else
63 | puts("Incorrect flag. Try again!");
64 | }
65 | return 0;
66 | }
67 | ```
68 |
69 | خب از سورس کد میتوان دید که برنامه یک رشته ورودی از ما میگیره و پاس میده به تابع `checkFlag`
70 | اونجا ورودی ما به تابع `mysteryFunction` پاس داده میشه و خروجیش با یک رشته خاص مقایسه میشه.
71 | تو تابع `mysteryFunction` میاد رو رشته ورودی یکسری xor انجام میده و خروجیش برگردونده میشه.
72 |
73 |
74 | متاسفانه تو خروجی IDA رشتهای که در انتها مقایسه میشه درست نمایش داده نشده و میتوان از خروجی BinaryNinja کمک گرفت.
75 | ```c
76 | uint64_t checkFlag(char* arg1)
77 | {
78 | int64_t var_28;
79 | __builtin_strcpy(&var_28, "hawb~w6q5dcn0[n2{\\|5s\x7f");
80 | void var_a8;
81 | strncpy(&var_a8, arg1, 0x80);
82 | mysteryFunction(&var_a8);
83 | int32_t rax;
84 | rax = strncmp(&var_a8, &var_28, 0x17) == 0;
85 | return rax;
86 | }
87 | ```
88 |
89 | ## حل چالش
90 |
91 |
92 | در انتها به سادگی با کد پایتونی زیر میتونیم فلگ رو بدست در بیاریم
93 |
94 | ```python
95 | #s = b"hawb~w6q5dcn0[n" + bytes.fromhex('7F73357C5C7B32')[::-1]
96 | s = b"hawb~w6q5dcn0[n2{\\|5s\x7f"
97 | for i, c in enumerate(s):
98 | print(chr(c^(i%5+1) ), end='')
99 | ```
100 |
101 |
102 |
103 | ---
104 | ??? success "FLAG :triangular_flag_on_post:"
105 |
14 |
15 | ## نگاه اولیه به سوال
16 |
17 | در این سوال به ما دو فایل داده شده. یک متن رمز شده فلگ و یک فایل باینری رمزکننده که طبق گفته سوال ظاهرا از کاربر ورودی میگیره و رمز شدش رو برامون پرینت میکنه.
18 | ```bash
19 | > file *
20 | flag.enc: ASCII text, with no line terminators
21 | turnob: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=60dbfb0af3f9c3f987d055cfc11f6da40cdbcf75, for GNU/Linux 3.2.0, stripped
22 |
23 | > cat flag.enc
24 | 5c:1b:72:35:35:64:5c:6d:95:ef:69:a6:d6:09:f8:6d:bc:9d:f8:99:16:0e:d5:f8:16:f0:7a:a1:d2:09:aa:f8:a2:bb:f8:8c:d2:7e:a7:%
25 | ```
26 |
27 | ## روش حل
28 | با چندبار اجرا کردن برنامه و دادن ورودی های مختلف میشه مشاهده کرد که هر کارکتر ورودی کاربر، به یک رشته منحصر به فرد مپ شده.
29 | برای مثال در دستور زیر مشاهده میکنیم که حرف `a` به رشته `12`، حرف `b` به رشته `1f` و حرف `c` به رشته `2c` انکد میشن.
30 | ```bash
31 | > echo -n 'abc' | ./turnob
32 | 12:1f:2c:%
33 | ```
34 |
35 | در ادامه کافیه یک اسکریپت پایتونی بنویسیم و دیکشنری از تمام کارکترها و متن رمز متناظرشون بسازیم و متن رمز شده فلگ رو رمزگشایی کنیم و به فلگ برسیم
36 |
37 | ```py
38 | from string import printable
39 | from subprocess import Popen, PIPE, STDOUT
40 |
41 | p = Popen(['./turnob'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
42 | ans = p.communicate(input=printable.encode())[0].decode()
43 |
44 |
45 | d = {j:i for i, j in zip(printable, ans.split(':'))}
46 |
47 | with open("flag.enc") as f:
48 | s = f.read()
49 |
50 | for i in s.split(':')[:-1]:
51 | print(d[i], end='')
52 | ```
53 |
54 |
55 |
56 | ---
57 | ??? success "FLAG :triangular_flag_on_post:"
58 |
`SNAPP{Sh0rTE5t_h3X_DuMp_u7il!tY_1n_C!}`
59 |
60 |
61 | !!! نویسنده
62 | [mheidari98](https://github.com/mheidari98)
63 |
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/blink-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/SnappCTF/blink-1.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/blink-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/SnappCTF/blink-2.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/blink-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/SnappCTF/blink-3.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/blink.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Reverse
6 | ---
7 |
8 | # چالش Blink
9 |
10 | 
11 |
12 | با این که این چالش تو دسته بندی ریورسه، اما خو کی حال داره کاکو؟ :joy:
13 |
14 | فقط تیکه اولش رو ریورس کردیم و فهمیدیم که یه ورودی میگیره و یه خروجی
15 |
16 | یه فایل سمپل ساختیم و طبق تصویر فهمیدیم این بلاگرفته داره چیکار میکنه
17 |
18 | 
19 |
20 | ```python linenums="1"
21 | import os
22 | for i in os.scandir('/tmp/Blink'):
23 | print()
24 | print(open("/tmp/Blink/" + i.name, 'r').read().replace('\n', ''), end='')
25 | ```
26 |
27 | بعد با این اسکریپت میتونیم این فایلا رو زیر هم چاپ کنیم و در نهایت فلگ ساخته میشه
28 |
29 | 
30 | ---
31 | !!! نویسنده
32 | [SafaSafari](https://twitter.com/SafaSafari3)
33 |
34 |
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/r2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FlagMotori/writeups/debfd57bb01d4bb09cc8fcc900fc8f9b63dc5cdc/docs/reverse/writeups/2024/SnappCTF/r2.png
--------------------------------------------------------------------------------
/docs/reverse/writeups/2024/SnappCTF/vitis.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | - SnappCTF
4 | - SnappCTF-2024
5 | - Reverse
6 | ---
7 |
8 | # چالش Vitis
9 |
10 | 
11 |
12 | دیگه ساده تر از این نداریم =)))
13 |
14 | ??? success "FLAG :triangular_flag_on_post:"
15 |