龙空技术网

php手工注入实例

白帽子安全 434

前言:

眼前你们对“php开发案例”都比较注意,各位老铁们都需要学习一些“php开发案例”的相关资讯。那么小编同时在网上网罗了一些对于“php开发案例””的相关资讯,希望朋友们能喜欢,看官们快快来了解一下吧!

一、php注入和asp注入的异同

Php的注入,目前是没有免费的工具可用的,因为它的注入手法太灵活,不像ASP的注入那样遵循一个固定的步骤就可以,所以到现在为止,还没有免费的工具给我们用。

那么,既然没有工具,那我们只好完全手工来了。

不过也不用担心,因为php一般都是搭配着mysql来的,所以我们的注入手法很灵活,注入的速度不一定会慢于asp中的工具的速度的。

二、php手工注入一般流程

1、判断是否可以注入

2、获得字段数

3、获得显示位

4、猜表名

5、猜字段

我这里要演示的网站是:

如图:

注入点:

OK,下面一步一步的来操作。

1、判断是否可以注入

在注入点后加一个单引号,回车,如图:

出现错误,说明应该是可以注入的。

再来,在注入点后加“+and+1=1”和“+and+1=2”,返回的页面分别为:

这个是正常的,另外一个是:

这个显示空白页面,说明页面出错了。

以上3点,充分说明此链接是可以注入的。

另外,我说一下,你看到我提交的链接中的“+”,只是起到一个代替空格的作用,无实意。

第一步完毕,开始第二步。

2、获得字段数

这里我先用ZBSI检测一下,打开ZBSI,把注入点地址粘贴进去,点击“检测注入”,工具提示可以注入,如图:

提示可以注入之后,再点击右边的“字段数目”,如图:

工具提示字段数为2。

如果你也遇到工具这么告诉你,说字段数为2的话,那么你就可以直接关掉工具了,因为,工具又出错了,字段数不可能是低于4的。

好了,现在我关掉工具,自己手工来。

这里我说一下,ZBSI是一款php注入的辅助工具,它可以帮助我们判断一个地址是否可以注入,并判断出这个地址的字段数,工具可能没设计好,我用的时候老是出错,不出错的几

率很小。

下载地址:

现在我该自己手工确定字段数了,我用order by的方法来判断。

我提交地址的格式为:

注入点地址+order+by+数值

比如:

如图:

页面显示正常,说明字段数是大于或等于7的,再提交:

页面出错,说明字段数不大于也不等于8。

这样一来,字段数是大于等于7而不大于不等于8,这样一推,字段数就是7了。

好了,现在第二步已经完成,开始第三步。

3、获得显示位

提交:

如图:

可以看到,页面上出现了几个数字,分别是2,3,4,那么,这几个数字就被我们称作显示位。

这里我要说的是,你查出的字段数是多少,那么就在union select后边写上多少个数字,我这里是7个字段,那么我就写:

1,2,3,4,5,6,7

如果你查到的网站是13个字段,那你就写:

1,2,3,4,5,6,7,8,9,10,11,12,13

这样,以此类推。

得到了显示位之后,我们的第三步进行完毕,开始第四步。

4、猜表名

猜表名的方法是,在第三步的完整的地址后加上:

Form 表名

比如:

这样,当admin表存在的话,页面就会显示正常,如图:

如果我们提交一个不存在的表名,页面就会出错,比如,我提交:

如图:

我们就是用这种方法,来猜表的。

好了,我现在已经猜到了表名,第四步进行完毕,开始第五步。

5、猜字段

我们猜字段的方法是,使用:

Concat(字段名)

替换显示位的位置。

比如,我提交:

如图:

我们上边就知道,2、3、4都是显示位,所以替换哪一个都无所谓,我这里替换的是3。

替换3个字符是:

Concat(username)

其中,concat()是一个函数,我们这里不必改变,需要改变的是括号中的字段名字。

如果你的括号中写的字段名在数据库中存在的话,那么页面上就会显示出这个字段中存储的内容,如上图,我猜的username字段在数据库中存在,那么页面上就显示出了这个字段中的内容,也就是我想得到的管理员的用户名。

我再提交:

如图:

OK,我们已经得到了管理员的密码,为“adminadmin”。

在实际注入的时候,记住这个格式就行了,因为如果我们在括号中写的字段名在数据库中不存在的话,页面是会出错的,比如,我提交:

如图:

所以,我们只需要不断的改变concat的括号中的字段名,直到页面正确为止。

好了,这就是我们要说的php+mysql注入的一般基本步骤了,得到了管理员的用户名和密码之后就去找后台登录,这我就不多说了。完毕。

标签: #php开发案例