簡單的sql注入


所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來說,它是利用現有應用程序,將(惡意)的SQL命令注入到后台數據庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到sql注入攻擊。

驗證繞過漏洞就是'or'='or'后台繞過漏洞,利用的就是AND和OR的運算規則,從而造成后台腳本邏輯性錯誤。

先舉個例子,你要登錄一個網站,上面讓你輸入用戶名字和密碼。那么,假如你輸入的用戶名是 admin ,但是你不知道密碼,你就輸入了一個 1' OR '1' = '1 ,那么,你就提交了兩個參數給服務器。假如,服務器拿這兩個參數拼SQL語句:SELECT T.* FROM XXX_TABLE TWHERE T.USER_ID = '/*param1*/'AND T.PASSWORD = '/*param2*/'那么,你提交的兩個參數就使SQL文變成了:SELECT T.* FROM XXX_TABLE TWHERE T.USER_ID = 'admin'AND T.PASSWORD = '1' OR '1' = '1'那么,這個SQL原來的校驗功能就被你繞過去了,你的這種行為就稱之為SQL注入。

public boolean login(String cardid,String password)
    {
        boolean rtn=false;
        
        try {
            
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test2016", "8656553");
            
            Statement st=conn.createStatement();

            //這種方式會造成SQL注入
            //String sql="select * from bankcard where card_id='"+cardid+"'and password='"+password+"'and state='1'";
            
            //注入登錄
            String sq="select * from bankcard where card_id='admin'and password='1'or'1'='1'";
            
            ResultSet rs=st.executeQuery(sq);
            
            
            rtn=rs.next();
            
            rs.close();
            st.close();
            conn.close();
            
        } catch (ClassNotFoundException | SQLException e) {
            // TODO 自動生成的 catch 塊
            e.printStackTrace();
        }
        
        return rtn;
    }
public void testLogin()
    {
        test01 t=new test01();
        
        if(t.login("286", "56"))
        
        {
            System.out.println("登錄成功");
        }
        else
        {
            System.out.println("卡號錯誤");
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM