1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          何謂為SQL注入?【基礎】

          來源:互聯網轉載 時間:2024-10-12 15:03:53

          什么是SQL注入?

          還記得小學語文考試上的填空題嗎?題目的意圖明顯是通過填空來了解答題者的名字和愛好。

          比如:我是_______________,喜歡__________________

          如果有同學填成下面這樣?

          我是超級蜘蛛池,我可以引蜘蛛快速提高收錄,喜歡_______________________

          這就是一個注入的例子,當出題者以為他已經定下了句子的主體結構,需要填空的內容是不會影響主體結構的,而填空者卻通過填寫的內容,修改了整句話的結構,這就是注入。

          通過精心構造的URL參數,或者表單提交的參數,拼接到預先定義好的SQL格式時,意外地改變了程序員預期的SQL結構時,SQL注入就構成了。執行該SQL語句已超出的程序員的意圖。比如,沒用用戶名或密碼可以登陸成功,或將數據庫內容全部dump下來,等等。

          靠前步、我們先安裝測試環境。安裝Apache、PHP、MySQL 這里用的LINUX環境

          在Ubuntu下安全LAMP非常簡單,只需要一個命令就可以了:

          sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql

          如果你有Web動態語言開發經驗,php是個很容易上手的語言。當然我們選用LAMP的目的不是Web本身,是使用它來寫一個demo的數據庫應用,測試SQL注入。

          在安裝MySQL過程中會要求設置root用戶的密碼,設置成root(后面鏈接數據庫時需要)。

          安裝完成后,web 項目根目錄默認在/var/www/, 為了簡單起來,對LAMP不做任何配置。打開瀏覽器,輸入 http://localhost/ 測試安裝是否成功。下是測試成功的例子。

          測試一下php是否工作正常,創建一個test.php文件sudo vim /var/www/test.php輸入下面的代碼:

          1. <?php

          2. phpinfo()

          3. ?>

          在瀏覽器打開 http://localhost/test.php,輸出結果如下:

          PHP測試環境搭建成功了。

          第二步、編寫簡單的數據庫應用

          使用mysql客戶端連接MySQL數據,命令如下:#mysql -h localhost -u root -p

          Enter password: <這里輸入密碼:root>

          輸入用戶root的密碼root成功登錄之后的過程:

          創建數據庫test

          首先要創建一個數據庫,這里將數據名字稱為test,在mysql客戶端輸入如下命令:

          mysql>create database test;

          進入test數據庫

          mysql> use test;

          創建表userinfo

          有了數據庫,還得有表,才能裝下真正的數據。簡單起見,表只有兩個字段name和passwd,分別保存用戶名和密碼,其中name為主鍵。MySQL下的創建語句:

          create table userinfo (name char(20) not null primary key, passwd char(20) not null);

          插入用戶數據

          為了測試,需要往表里面插入數據。使用mysql語句往userinfo表插入兩個用戶信息,分別是linyt和ivan,密碼和用戶名內空一樣。

          MySQL語句如下:

          insert into userinfo values('linyt', 'linyt');

          insert into userinfo values('ivan','ivan');

          測試一下數據表內容

          在MySQL客戶端輸入:select * from userinfo;命令可以看到userinfo表中所有記錄。

          下面使用php腳本語言編寫個簡單的登錄系統。代碼如下:

          原理非常簡單,通過username 和 passwd 兩個文本框接受用戶輸入的用戶名和密碼,然鏈接數據庫,

          使用select * from userinfo where name='<輸入的用戶名>' AND passwd='<用戶輸入的密碼>'SQL語句從數據庫中查詢出用戶記錄,如果有該用名,則以表格方式來顯示用戶信息。

          對于沒人做過web開發的朋友可以會問,這里為什么需要單引號',那是因為name字段的類型是字符串,字符串值需要使用單引號'括起來。而數值類型是不需的單引號'的。

          三、SQL注入實驗

          在注入實驗之前,我們先展示正常登錄效果:

          為了方便后面驗證展示,每次都會在網頁上輸出查詢的SQL語句內容。

          先來觀察一下發生了什么事情:

          1. 分別輸入用戶名linyt和密碼linyt,然后點login

          2. 后面php服務中獲取用戶的輸入,并保存在$name和$passwd兩個變量

          3. 使用$name和$passwd兩變量來拼接生成SQL語句,并進行數據庫查詢

          4. 將從數據庫是查詢出數據在網頁上輸出

          本例中輸入用戶名linyt和密碼linyt情況,SQL語句的拼接過程如下:

          如果不知道用戶名和密碼的情況下,怎么能夠登陸成功呢?

          如果不知道用戶名密碼,那么name = ‘$name’ 隨便替換成一個用戶名如abc,變成name = ‘abc’,這個條件肯定不能為true,為了使得WHERE語句的條件為ture,就得更改它的語句結構。

          即然name = ‘abc’ 肯定為false,那么我們在后面增加一個or,再附件一個恒真語句,那整個語句就為ture了。,比如'1' = '1',1=1, '' = '',在不同的上下文選擇適合的就可以了。

          留意一下SQL拼接語句中name = ‘$name’,這里是有兩個'號的。為了最終注入結果為:

          select * from userinfo WHERE name = '<這里寫什么都不重要>' or '1'='1' AND passwd = '<這里寫什么都不重要>' or '1'='1'

          那name和passwd應該填什么呢?請看圖:

          四、SQL注入測試結果:

          請注意瀏覽器地址欄的內容:

          http://localhost/uerinfo.php?name='+or+'1'%3D'1&passwd='+or+'1'%3D'1

          瀏覽器在址址顯示時使用了URL編碼,與用戶輸入username和passwd內容看起來不完全一樣,實際是一樣的。使用+來代表空格,%3D來代替=

          通過注入,網頁顯示了userinfo表中的所有記錄。 大家可以再看一下網頁上的SQL語句輸出:

          sql = select * FROM userinfo WHERE name = '' or '1'='1' AND passwd = '' or '1'='1'

          如果你對SQL很在行,那可做更復雜的注入,可以將數據庫里面很多東西給偷出來。

          這是陽光明媚的一天,互聯網里風平浪靜,一切都是欣欣向榮。我就是在這樣一個平凡的日子里誕生了。我給自己起了個名字叫超,不過我的師哥師姐們都喜歡叫我小超。從出生的那...

          網上關于SEO優化的知識很多也很雜,很多新手都不知道如何選擇。本來耗子網站里每篇文章都有的詳細步驟的,考慮到很雜,于是耗子對各種SEO優化基礎知識進行了整理,但...

          今天,我給大家講講如何利用電影貼吧引流輕松變現。這個很適合新手。廢話不多說,直接上干貨。每上映一個新片子,只要這個片子有一定的熱度,馬上該片子的貼吧就會出現各種...

          隨著科技的不斷進步,人們對于電器產品的需求也不斷增加。而如何讓電器企業脫穎而出,成為市場上的佼佼者呢?這就需要一個具備優秀用戶體驗和品牌形象的電器網站來實現。因此,本文將為您提供一份電器網站建設的解決方案。一、選取合適的CMS(內容管理系統)建立網站之前需要先選擇一個合適的CMS系統,以便后期快速更新和維護網站。而目前市面上比較流行的CMS系統有WordPress、Drupal、Joomla等。二...

          網站寄生蟲是指什么? 寄生蟲是黑帽SEO常用的一種方法,一個黑帽軟件,它是侵入別人網站,植入寄生蟲程序,自動生成各種非法頁面。為自己目標網站導流和輸送權重。顧名思義,就...

          隨著互聯網的發展,網站已經成為商家開展業務的重要平臺。但是,僅僅擁有一個美觀的網站遠遠不夠,還需要通過搜索引擎排名優化來提升網站在搜索引擎中的排名。本文將會介紹如何進行搜索引擎排名優化,讓你的網站獲得更多的流量和轉化率。了解搜索引擎工作原理是關鍵描述內容:搜索引擎工作原理就是根據用戶的關鍵詞查詢相關信息,通過算法來判斷網站的相關性和權重,并以此來決定網站的排名。因此,了解搜索引擎工作原理非常重要,...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>