0x00.题目描述:
背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Apache+PHP+MySQL,PHP代码对客户端提交的参数做了些许过滤。来感受过滤过后的SQL手工注入吧。
实训目标
1、掌握SQL注入原理;
2、了解手工注入的方法;
3、了解MySQL的数据结构;
4、了解SQL注入常用注释字符;
5、了解字符串的URL加解密;
解题方向
手工进行SQL注入测试,获取管理密码登录。
0x01.解题思路:
靶场环境:

主界面

维护界面
手工注入:
检测注入点:order by被拦截,用or或者and来测试,发现空格以及=被拦截,空格可以用/**/代替,等号用like来代替,成功检测到注入点。
payload:/new_list.php?id=-1/**/or/**/1/**/like/**/1

检测字段数:order by语句可行,当为4时正常,当为5时出现错误,说明字段数为4。

联合注入爆库,首先是爆数据库名:
payload:/new_list.php?id=-1/**/%75nion/**/%73elect/**/1,2,database(),4%23
注:union,select关键字均被过滤,故而转URL编码进行绕过。

爆数据库名
接下来就是爆表名,列名以及字段了。

爆表名

爆列名

爆字段
status为1的即为账号密码,密码用MD5转一下即可~
得到最终的key:mozhe9598eda2ea48538e9ab8fd688bc
sqlmap注入:
哇,sqlmap居然检测不到注入点~以后sqlmap检测不到的地方必须手工检测一遍啊

0x02.总结:
1.空格过滤:/**/,%0a,%a0,%09,%0c,%0d,%0b代替;等于号可以用like代替;
2.关键字过滤:双写,大小写,编码等;