मैं अपने दोस्त को वेबसाइट के लिए अपना मॉड्यूल समाप्त करने में मदद कर रहा हूं। अपने मॉड्यूल को देखते हुए मेरी पहली छाप से, मुझे कुछ बहुत ही खतरनाक चीजें मिलीं, लेकिन वह कहता है कि यह विधि सुरक्षित है। कोड कीपरीक्षण नल बाइट भेद्यता
भाग:
session_start();
if(isset($_POST['foo']))
{
$_SESSION['foo'] = $_POST['foo'];
}
if(isset($_SESSION['foo']))
{
$foo['foo'] = $_SESSION['foo'];
}
if(is_file("inc/". $foo['foo'] . "/bar.php")) {
// code
}
else {
// code
}
नोट: फ़ाइल (इंक/परीक्षण/bar.php) मौजूद है,
मैं उसका कोड का परीक्षण करना चाहता था, और मैं निम्नलिखित अनुरोध भेजे:
पोस्ट :: foo => परीक्षा/bar.php% 00
पोस्ट :: foo => परीक्षा/bar.php \ 0
curl_setopt (। $ ch, CURLOPT_POSTFIELDS, 'foo = परीक्षा/bar.php' chr (0x00));
लेकिन इनमें से कोई भी तरीका काम नहीं करता है। क्या वह कोड वास्तव में सुरक्षित है? और किसी की सुरक्षा को बाईपास करने के लिए कोई नल बाइट कैसे भेज सकता है। मैं अपने दोस्त को दिखाना चाहता हूं कि उसका कोड सुरक्षित नहीं है।
मैं एक php विशेषज्ञ नहीं हूं इसलिए मैं इसे एक टिप्पणी के रूप में छोड़ दूंगा, लेकिन आप "../../ जैसे कुछ पास नहीं कर सके। ./../ "और फाइल सिस्टम के लिए मनमाने ढंग से पहुंच प्राप्त करें? –
@ChrisThompson के अंत में "/bar.php" है, इसलिए यह सभी मामलों में ../../../bar.php की जांच करेगा – John
ठीक है तो यह केवल एक खतरा है यदि आप संभावित रूप से _some other_ ' बार।php' फ़ाइल जिसे आपको –