天天看點

基于HTTP頭部的注入

常見的sql注入一般都是通過表單或請求參數進行注入,但這裡給出的例子是通過HTTP協定頭部進行注入。

例如一個的請求如下:

這裡看起來都很正常,但仔細看HTTP協定的User-Agent頭部為“Mozilla/5.0’(select*from(select(sleep(20)))a) #”。其中“select * from (select(sleep(20)))”是不正常的,可能是攻擊者正在注入攻擊。

這裡的攻擊主要是讓資料庫什麼也不幹而睡眠20秒,進而浪費資料庫處理線程。這是一個簡單的注入,除此之外還能進行更多複雜的攻擊。

一般擷取頭部的資訊用于資料分析,例如這裡擷取User-Agent就可以知道客戶都是通過什麼浏覽器通路系統的。jsp中直接通過<code>request.getHeader("User-Agent")</code>就可以擷取到該值,接着可能就直接儲存到資料庫了,Mozilla/5.0’(select*from(select(sleep(20)))a) #中的#号在資料庫中作為注釋符号,它産生的sql可能如下:

<code>INSERT INTO visits (useragent, datetime) VALUES ('Mozilla/5.0', (select*from(select(sleep(20)))a)) #', '2016-06-13 13:00:06')</code>

這時#号後面都被注釋掉了,于是資料庫睡眠了20秒。

========廣告時間========

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321">為什麼寫《Tomcat核心設計剖析》</a>

=========================

歡迎關注:

基于HTTP頭部的注入
下一篇: 注解的原理