Team Ai
Apppublic

Myprofileiscompleate/sql-ninja-injection-tool

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
script.js128 linesDownload Raw Back to root
1document.addEventListener('DOMContentLoaded', function() {2    // Check for dark mode preference3    if (localStorage.getItem('darkMode') === 'true') {4        document.documentElement.classList.add('dark');5    }6 7    // Initialize tooltips8    const tooltipTriggers = document.querySelectorAll('[data-tooltip]');9    tooltipTriggers.forEach(trigger => {10        trigger.addEventListener('mouseenter', showTooltip);11        trigger.addEventListener('mouseleave', hideTooltip);12    });13 14    // Load vulnerability data for each app15    if (window.location.pathname.includes('dvwa.html')) {16        loadDVWAData();17    } else if (window.location.pathname.includes('bwapp.html')) {18        loadBWAPPData();19    } else if (window.location.pathname.includes('juice.html')) {20        loadJuiceShopData();21    }22});23 24function showTooltip(e) {25    const tooltipText = e.target.getAttribute('data-tooltip');26    const tooltip = document.createElement('div');27    tooltip.className = 'absolute z-10 bg-gray-800 text-white text-xs rounded py-1 px-2 whitespace-nowrap';28    tooltip.textContent = tooltipText;29    document.body.appendChild(tooltip);30 31    const rect = e.target.getBoundingClientRect();32    tooltip.style.top = `${rect.top - 30}px`;33    tooltip.style.left = `${rect.left + rect.width / 2 - tooltip.offsetWidth / 2}px`;34 35    e.target._tooltip = tooltip;36}37 38function hideTooltip(e) {39    if (e.target._tooltip) {40        document.body.removeChild(e.target._tooltip);41        delete e.target._tooltip;42    }43}44 45async function loadDVWAData() {46    // In a real app, this would fetch data from an API47    const vulnerabilities = [48        { id: 1, name: 'Basic SQL Injection', severity: 'High', description: 'Standard SQL injection vulnerability allowing unauthorized database access.', payload: "' OR '1'='1" },49        { id: 2, name: 'Blind SQL Injection', severity: 'High', description: 'Time-based blind SQL injection allowing data extraction without visible errors.', payload: "' OR (SELECT SLEEP(5)) --" },50        { id: 3, name: 'Union-Based Injection', severity: 'Critical', description: 'Union-based SQL injection allowing data extraction from other tables.', payload: "' UNION SELECT username, password FROM users --" }51    ];52    renderVulnerabilities(vulnerabilities);53}54 55async function loadBWAPPData() {56    const vulnerabilities = [57        { id: 1, name: 'POST SQL Injection', severity: 'High', description: 'SQL injection via POST parameters.', payload: "admin' OR '1'='1' --" },58        { id: 2, name: 'Error-Based Injection', severity: 'High', description: 'SQL injection that reveals database errors.', payload: "' AND 1=CONVERT(int, (SELECT table_name FROM information_schema.tables)) --" },59        { id: 3, name: 'Second Order Injection', severity: 'Medium', description: 'Stored SQL injection that executes later.', payload: "'; UPDATE users SET password='hacked' WHERE username='admin' --" }60    ];61    renderVulnerabilities(vulnerabilities);62}63 64async function loadJuiceShopData() {65    const vulnerabilities = [66        { id: 1, name: 'NoSQL Injection', severity: 'High', description: 'MongoDB NoSQL injection vulnerability.', payload: "' || '1'=='1" },67        { id: 2, name: 'Login Bypass', severity: 'Critical', description: 'SQL injection in login form allowing admin access.', payload: "admin' --" },68        { id: 3, name: 'Search Field Injection', severity: 'Medium', description: 'SQL injection in product search feature.', payload: "%' AND 1=1 UNION SELECT null,username,password,null,null,null,null FROM Users --" }69    ];70    renderVulnerabilities(vulnerabilities);71}72 73function renderVulnerabilities(vulnerabilities) {74    const container = document.getElementById('vulnerabilities-container');75    if (!container) return;76 77    container.innerHTML = vulnerabilities.map(vuln => `78        <div class="vulnerability-card bg-white dark:bg-gray-800 rounded-lg shadow-md p-6 mb-4">79            <div class="flex justify-between items-start mb-2">80                <h3 class="text-xl font-bold text-gray-800 dark:text-white">${vuln.name}</h3>81                <span class="px-2 py-1 text-xs rounded-full ${82                    vuln.severity === 'Critical' ? 'bg-red-500 text-white' : 83                    vuln.severity === 'High' ? 'bg-orange-500 text-white' : 84                    'bg-yellow-500 text-gray-800'85                }">${vuln.severity}</span>86            </div>87            <p class="text-gray-600 dark:text-gray-300 mb-4">${vuln.description}</p>88            <div class="bg-gray-100 dark:bg-gray-700 p-3 rounded mb-4">89                <code class="text-sm text-gray-800 dark:text-gray-200">${vuln.payload}</code>90            </div>91            <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded mr-2 test-btn" data-payload="${encodeURIComponent(vuln.payload)}">92                Test Vulnerability93            </button>94            <button class="bg-green-500 hover:bg-green-600 text-white px-4 py-2 rounded learn-more-btn" data-vuln-id="${vuln.id}">95                Learn Mitigation96            </button>97        </div>98    `).join('');99 100    // Add event listeners101    document.querySelectorAll('.test-btn').forEach(btn => {102        btn.addEventListener('click', function() {103            const payload = decodeURIComponent(this.getAttribute('data-payload'));104            testVulnerability(payload);105        });106    });107 108    document.querySelectorAll('.learn-more-btn').forEach(btn => {109        btn.addEventListener('click', function() {110            const vulnId = this.getAttribute('data-vuln-id');111            showMitigation(vulnId);112        });113    });114}115 116function testVulnerability(payload) {117    // In a real app, this would send the payload to the backend118    alert(`Testing with payload:\n\n${payload}\n\nThis would send the payload to the vulnerable application in a real scenario.`);119}120 121function showMitigation(vulnId) {122    const mitigations = {123        1: "Use prepared statements with parameterized queries to prevent SQL injection.",124        2: "Implement proper input validation and sanitization.",125        3: "Apply the principle of least privilege to database accounts."126    };127    alert(`Mitigation for this vulnerability:\n\n${mitigations[vulnId] || 'No specific mitigation information available.'}`);128}