終於是吧cracer的滲透教程看完了,
也終於是有點時間來整理這些凌亂的筆記了,
送給萌新的幾句話:
sql注入對於想學安全方面的人來說算是乙個很基礎的知識,
所以不要以為學完了sql注入自己就是大神了,路還遠著呢。
學習網路安全方面,實操很重要!很重要!很重要!
所以這方面的學習一定要以理論和實操相結合的方式,這樣你才會真正有所收穫和成長。
sql注入方面的實操
線上可以去ctfhub,墨者,或者一些免費的線上靶場練練手(這裡不提供了,自己勤快點)
線下可以自行搭建實驗靶場,然後找諸如dvwa,sqlilabs,等等環境(多動手很有用的)
怎麼搭靶場可以參考我前面寫的一篇文章
2.判斷是否存在三種注入漏洞
進入網頁裡請求的資料要進入到資料庫進行查詢,如果查詢語句不做限制就極有可能洩露資料庫的資料
按查詢的型別分類:
按http的提交方式可以分為:
按效果可以分為:
1.首先判斷是否有注入(例如利用1=1,1=2)
2.判斷注入型別(例如加上『』看是否報錯)
3.判斷資料庫型別(構造不同的查詢特徵語句)
4.這一步眾說紛紜,可以開始注入,也可先確定資料庫許可權再開始
5.查資料庫的庫名,表名,列名以及相應的資料
目前主流的資料庫有三種,mysql,ms sql servel,oracle(access暫且不提)
所以簡單說說三種資料庫的語句區別
(初學者也只能簡單學習,想學好sql注入這三種資料庫還是要好好研究的)
注意1前面和最後的那個b後面沒有』這個符號,因為要構成sql注入語句(設定成了字元型sql注入)
之後的注入就以mysql注入為例
(1)數字型:
例如:select * from 表名 where id=1
2.條件構造:
如果存在注入則可以構造select * from 表名 where id=1 and 1=1 (藍色代表你的輸入)
解析:1=1代表永真,所以代表的意義為:
1=1 and 這個頁面是正確的
因此你訪問頁面是有效的,所以就成功了
(2)字元型:
例如:原理:基本同數字型
1.資料庫原型:
select * from 表名 where user=「admin」(資料庫中可為單引號可為雙引號)
2.條件構造:
如果存在注入則可以構造select * from 表名 where id=『admin『 and 1=1 『 (藍色代表你的輸入,注意最左邊那個單引號不是你的輸入)
或者這麼構造:select * from 表名 where id=『admin『 and 1=1 『–+ (藍色代表你的輸入)(其中–+在sql中表注釋,其他的mysql注釋還有/**/,#)
3.q&a
q:有人可能會問了,為什麼標紅的沒有單引號呢?
a:因為是把admin賦值給user,然後user代入到mysql查詢語句中,單引號只存在於mysql,故在網頁上不顯示
q:這個單引號怎麼看不懂?
a: 看下圖
(3) 搜尋型:
例如:例如:
原理:都差不多
1.資料庫原型:
select * from 表名 where 字段 like 『%***%』
2.條件構造:
如果存在注入則可以構造select * from 表名 where id=『%***%『 and 『%1%』=』%1 %』(藍色代表你的輸入)
因為搜尋型比較特殊,所以可以構造乙個』%1%』=』%1%'的語句構成永真條件,
閉合的話根據資料庫原型進行考慮即可
(1)數字型
(2)字元型
(3)搜尋型
待續…
從0開始學spark
參考 local 模式 即單機模式,這種安裝加壓即可,具體安裝方法穿插在 standalone 模式 standalone 模式 即搭建 spark 集群,但不與其他框架整合,如 yarn,此時 spark 執行在集群中 基於 yarn 的 spark 集群部署 yarn 集群 spark 集群,此...
從0開始學架構 推薦
程式設計師的成長繞不開架構設計,有時架構設計就像鴻溝一樣擋在程式設計師晉公升之路上,只要跨過去就可以海闊天空。但不少技術能力很強的程式設計師依然不能完全掌握架構設計,這與架構設計的思維方式和訓練機制與寫 有很大差異有關,加之人們對架構設計存在很多誤區,缺乏一套行之有效的架構設計方 就可能導致在實踐過...
從0開始學swift 基礎
可以同時定義多個變數並賦予其型別注釋 let a,b,c int double 64位浮點數,要求至少有15位數字,精度很高。float 32位浮點數,要求最少有6位數字,精度要求不高時使用。注 當你沒有給浮點數標明型別時,swift總是會選擇double 二進位制 0b 八進位制 0o 十六進製制...