大型网站建设开发,河北做网站,网页广告代码,网站搭建修改收费依据前言#xff1a;
觉得这个题目挺有意义的#xff0c;因为最近在学数据库#xff0c;但是不知道在现实中有什么应用#xff0c;所以学起来也没有什么兴趣#xff0c;做了这个题目#xff0c;发现数据库还是挺有用处的#xff0c;哈哈
知识点#xff1a;
mysql 中and和…前言
觉得这个题目挺有意义的因为最近在学数据库但是不知道在现实中有什么应用所以学起来也没有什么兴趣做了这个题目发现数据库还是挺有用处的哈哈
知识点
mysql 中and和or的优先级 and or sqlselect * from DB where user_id1 or user_name张三 and birthday2000-03-03 1.该条sql 表示从 DB 中查询出 user_id 1 或者 (user_name张三 并且 birthday2000-03-03) 的数据 sqlselect * from DB where user_id1 or user_name张三 and birthday2000-03-03 2.该条sql 表示查询表示user_id 1 或者 user_name张三并且 birthday2000-03-03 因为 的优先级会比 and 和 or 高 所以会先执行 里的
解题过程
打开靶机后发现是一个登录界面需要输入用户名和密码 先看看只输入用户民admin看看有什么报错 然后只输入密码也是同样的报错所以用户名和密码都必须有值才能进行sql语句验证
判断是什么闭合
输入用户名admin和admin 发现一个sql报错信息 得知是闭合 猜测后台的sql语句如下 sqlselect * from user where username$usernameand password$password 然后使用万能密码看看能不能登录admin账户 payload 用户名admin 密码admin or 11# 然后就出flag了 万能密码的原理是利用or和and的优先级来使得后面的where子句为真
我们输入的payload放入sql语句中就是这样的 sqlselect * from user where usernameadminand passwordadmin or 11# 意思是查询用户名为admin并且passwordadmin或者11的数据 #把后面的给注释掉了
因为11恒真所以where子句后面恒真所以就会输出所有用户的信息。 如果想只输出admin的信息可以使用 payload 用户名admin or 11# 密码admin 输入的payload放入sql语句中就是这样的 sqlselect * from user where usernameadmin or 11#and passwordadmin 意思是查询usernameadmin或者11#把后面注释掉了所以不用管。
这样就只会输出admin的信息。