直接上硬菜。盲注的一段語句:函數
1170 UNION SELECT IF(SUBSTRING(current,1,1)) = CHAR(119) , BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM (SELECT Database() as current) as tb1;加密
意思是想搞庫名。判斷庫名的第一個字母時否是w(CHAR(119))。若是爲真那就會經過BENCHMARK()函數形成較長延時,若是不爲真很快就執行完了。這樣遍歷全部的字母把庫名所有驗證完爲止。spa
看着都不熟悉了,挨着重新學一遍,加油。字符串
UNION 和UNION ALL做用:合併兩個或者多個select相同列結果集。只要保證列相同就行select
UNION:篩選去重合並。遍歷
UNION ALL:簡單粗暴的合併,顯示全部結果。二進制
eg:客戶端
SELECT User,Sex FROM usertab1 UNION SELECT User,Sex FROM usertab2;#結果總共條數12條,由於過濾了重複的查詢
SELECT User,Sex FROM usertab1 UNION ALL SELECT User,Sex FROM usertab2;#結果總共條數38條,簡單合併拼接tab
SUBSTRING做用:字符截取,SUBSTRING(被截取字段,截取開始位置,截取長度)
eg:
SELECT SUBSTRING(UserName,1,1) AS fristname,UserName FROM users;#fristname列查詢出UserName列中值的第一個字符
BENCHMARK做用:BENCHMARK(函數執行次數,表達式)
eg:
select BENCHMARK(1000000,MD5('8087878766d'));#結果爲0,時間: 0.321s,時間爲客戶端通過時間
ENCODE:扯出了一堆加密函數,ENCODE(str,key) 使用key做爲密鑰加密字符串str,調用ENCODE()的結果是一個二進制字符串,它以BLOB類型存儲