丰满少妇理伦A片在线看,精品日产卡一卡二卡麻豆,天堂之囚在线观看,少妇富婆按摩偷人a片

  • 歡迎使用超級(jí)蜘蛛池(CJZZC)網(wǎng)站外鏈優(yōu)化,收藏快捷鍵 CTRL + D

何谓为SQL注入?【基础】


什么是SQL注入?

還記得小學(xué)語(yǔ)文考試上的填空題嗎? 題目的意圖明顯是通過(guò)填空來(lái)了解答題者的名字和愛(ài)好。

比如:我是_______________,喜歡__________________

fd9d6d4efe50f6ef44c319d50a9cfb02.png

如果有同學(xué)填成下面這樣?

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

這就是一個(gè)注入的例子,當(dāng)出題者以為他已經(jīng)定下了句子的主體結(jié)構(gòu),需要填空的內(nèi)容是不會(huì)影響主體結(jié)構(gòu)的,而填空者卻通過(guò)填寫的內(nèi)容,修改了整句話的結(jié)構(gòu),這就是注入。

通過(guò)精心構(gòu)造的URL參數(shù),或者表單提交的參數(shù),拼接到預(yù)先定義好的SQL格式時(shí),意外地改變了程序員預(yù)期的SQL結(jié)構(gòu)時(shí),SQL注入就構(gòu)成了。執(zhí)行該SQL語(yǔ)句已超出的程序員的意圖。比如,沒(méi)用用戶名或密碼可以登陸成功,或?qū)?shù)據(jù)庫(kù)內(nèi)容全部dump下來(lái),等等。

第一步、我們先安裝測(cè)試環(huán)境。安裝Apache、PHP、MySQL 這里用的LINUX環(huán)境

 在Ubuntu下安全LAMP非常簡(jiǎn)單,只需要一個(gè)命令就可以了:

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

 如果你有Web動(dòng)態(tài)語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn),php是個(gè)很容易上手的語(yǔ)言。當(dāng)然我們選用LAMP的目的不是Web本身,是使用它來(lái)寫一個(gè)demo的數(shù)據(jù)庫(kù)應(yīng)用,測(cè)試SQL注入。

 在安裝MySQL過(guò)程中會(huì)要求設(shè)置root用戶的密碼,設(shè)置成root(后面鏈接數(shù)據(jù)庫(kù)時(shí)需要)。

 安裝完成后,web 項(xiàng)目根目錄默認(rèn)在/var/www/, 為了簡(jiǎn)單起來(lái),對(duì)LAMP不做任何配置。打開(kāi)瀏覽器,輸入 http://localhost/ 測(cè)試安裝是否成功。下是測(cè)試成功的例子。

 測(cè)試一下php是否工作正常,創(chuàng)建一個(gè)test.php文件 sudo vim /var/www/test.php  輸入下面的代碼:

  1.  <?php

  2. phpinfo()

  3.  ?>

在瀏覽器打開(kāi) http://localhost/test.php,輸出結(jié)果如下: 

PHP測(cè)試環(huán)境搭建成功了。

第二步、編寫簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用   

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

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

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


創(chuàng)建數(shù)據(jù)庫(kù)test

首先要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù),這里將數(shù)據(jù)名字稱為test,在mysql客戶端輸入如下命令:

mysql>create database test;

進(jìn)入test數(shù)據(jù)庫(kù)

mysql> use test;

創(chuàng)建表userinfo

有了數(shù)據(jù)庫(kù),還得有表,才能裝下真正的數(shù)據(jù)。簡(jiǎn)單起見(jiàn),表只有兩個(gè)字段name和passwd,分別保存用戶名和密碼,其中name為主鍵。MySQL下的創(chuàng)建語(yǔ)句:

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

插入用戶數(shù)據(jù)

為了測(cè)試,需要往表里面插入數(shù)據(jù)。使用mysql語(yǔ)句往userinfo表插入兩個(gè)用戶信息,分別是linyt和ivan,密碼和用戶名內(nèi)空一樣。

MySQL語(yǔ)句如下:

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

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

測(cè)試一下數(shù)據(jù)表內(nèi)容

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

下面使用php腳本語(yǔ)言編寫個(gè)簡(jiǎn)單的登錄系統(tǒng)。代碼如下: 

原理非常簡(jiǎn)單,通過(guò)username 和 passwd 兩個(gè)文本框接受用戶輸入的用戶名和密碼,然鏈接數(shù)據(jù)庫(kù),

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

 對(duì)于沒(méi)人做過(guò)web開(kāi)發(fā)的朋友可以會(huì)問(wèn),這里為什么需要單引號(hào)',那是因?yàn)閚ame字段的類型是字符串,字符串值需要使用單引號(hào)'括起來(lái)。而數(shù)值類型是不需的單引號(hào)'的。

三、SQL注入實(shí)驗(yàn)

在注入實(shí)驗(yàn)之前,我們先展示正常登錄效果:



      為了方便后面驗(yàn)證展示,每次都會(huì)在網(wǎng)頁(yè)上輸出查詢的SQL語(yǔ)句內(nèi)容。

先來(lái)觀察一下發(fā)生了什么事情:

  1. 分別輸入用戶名linyt和密碼linyt,然后點(diǎn)login

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

  3. 使用$name和$passwd兩變量來(lái)拼接生成SQL語(yǔ)句,并進(jìn)行數(shù)據(jù)庫(kù)查詢

  4. 將從數(shù)據(jù)庫(kù)是查詢出數(shù)據(jù)在網(wǎng)頁(yè)上輸出

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

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

如果不知道用戶名密碼,那么name = ‘$name’ 隨便替換成一個(gè)用戶名如abc,變成name = ‘a(chǎn)bc’,這個(gè)條件肯定不能為true,為了使得WHERE語(yǔ)句的條件為ture,就得更改它的語(yǔ)句結(jié)構(gòu)。

即然name = ‘a(chǎn)bc’ 肯定為false,那么我們?cè)诤竺嬖黾右粋€(gè)or,再附件一個(gè)恒真語(yǔ)句,那整個(gè)語(yǔ)句就為ture了。,比如'1' = '1',1=1, '' = '',在不同的上下文選擇適合的就可以了。

留意一下SQL拼接語(yǔ)句中name = ‘$name’,這里是有兩個(gè)'號(hào)的。為了最終注入結(jié)果為:

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

那name和passwd應(yīng)該填什么呢?請(qǐng)看圖:

四、SQL注入測(cè)試結(jié)果: 


請(qǐng)注意瀏覽器地址欄的內(nèi)容:

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

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

通過(guò)注入,網(wǎng)頁(yè)顯示了userinfo表中的所有記錄。 大家可以再看一下網(wǎng)頁(yè)上的SQL語(yǔ)句輸出:

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

如果你對(duì)SQL很在行,那可做更復(fù)雜的注入,可以將數(shù)據(jù)庫(kù)里面很多東西給偷出來(lái)。

本文鏈接:http://m.hkass.cn/article/130.html

超級(jí)蜘蛛工具

  • 網(wǎng)站鏈接HTTP狀態(tài)批量檢測(cè)_在線批量檢測(cè)網(wǎng)站鏈接狀態(tài)_超級(jí)蜘蛛池
  • 百度關(guān)鍵詞排名查詢_網(wǎng)站關(guān)鍵詞排名批量查詢_超級(jí)蜘蛛池
  • 百度收錄查詢_在線百度收錄批量查詢_超級(jí)蜘蛛池
  • 域名IP地址批量查詢_在線批量查詢網(wǎng)站IP地址_超級(jí)蜘蛛池
  • 超級(jí)外鏈發(fā)布工具_(dá)在線免費(fèi)批量發(fā)布SEO外鏈_超級(jí)蜘蛛池
  • 網(wǎng)頁(yè)蜘蛛模擬抓取測(cè)試工具_(dá)超級(jí)蜘蛛工具_(dá)超級(jí)蜘蛛池