国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

sql注入之order by猜列數問題

weizx / 470人閱讀

摘要:問題簡述在用做注入檢測時,遇到一個小小的問題猜出來的列數跟數據庫表中的列數不匹配。在未了解之前,我一直想當然的以為就是獲取數據庫表中的列數,在兩次實際檢測過程中,確實發現這個是我所不能理解的。所以猜解得到的列數還跟在后端的邏輯有關。

環境: xampp-win32-5.6.3-0-VC11  dvwa-1.0.8
前言

有幸在網上搜到一款非常不錯的滲透測試演練系統 — dvwa ,作為學習,演練真的非常強大啊! 在學習的過程中也遇到一些問題,所以這里做學習分享記錄。

問題簡述

在用dvwa做sql 注入檢測時,遇到一個小小的問題 — order by 猜出來的列數跟數據庫表中的列數不匹配。(注入時猜出來兩個字段,但是實際數據庫的表中卻有6個字段)。在未了解之前,我一直想當然的以為 order by就是獲取數據庫表中的列數,在兩次實際檢測過程中,確實發現這個是我所不能理解的。

問題詳情

在發現注入點后,進行猜列數時,用了如下語句:


故此我們猜出有兩列,但是我去數據庫查看相應的表時,發現字段比這個多

搞定問題

在別人的指導下作了如下分析:

將猜列數語句直接在sql數據庫執行,發現他們的結果跟在web頁面注入時都是不一致的

而在數據庫執行得到的6列則是跟數據庫匹配的,難道order by 猜的列數有問題?

最后去注入代碼看到源碼一下豁然開朗:

$getid = "SELECT first_name, last_name FROM users WHERE user_id = "$id"";

你也看到了,我在mysql執行的語句是 select * ,而 注入代碼則是 select first_name, last_name。

小結

網上大多資料說的order by來猜列數,實際是猜查詢出的列數,而不是表實際的列數。order by本來就是指定的結果如何order,針對的就是查詢結果而不是原表。所以order by猜解得到的列數還跟在后端的邏輯有關。

實用

這個有什么用?我用一個例子來簡述。

在注入時,用order by 猜出結果集有兩個字段,且兩字段名分別為:user pwd (實際數據庫表中還有id一字段)

在爆字段值時:當注入語句這樣時可能什么也得不到,甚至直接報錯:

代碼:

and 1=2 union select user, 2 from admin 

error:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /usr/local/webroot/cw/about/index.php on line 95

這時我們需要對注入語句進行轉換下:

and 1=2 union select concat(id,0x232323,user,0x232323,pwd),2 from admin

這樣就能到兩字段的值了

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31928.html

相關文章

  • sqli-labs過關write up記錄(Page-1)

    摘要:當后面的數字大于表的列數時就會報錯訪問頁面正常,訪問頁面異常所以這個表有個字段。聯合查詢獲取信息運算符可以將兩個或兩個以上語句的查詢結果集合合并成一個結果集合顯示,即執行聯合查詢。 sqli-labs靶機搭建 docker部署: docker pull acgpiano/sqli-labs docker run -d -p 80:80 acgpiano/sqli-labs 訪問127...

    KitorinZero 評論0 收藏0

發表評論

0條評論

weizx

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<