BUUCTF Web[极客大挑战2019] EasySQL

问题分析

  • 题目类型是Web类型,而且是一个登录页面,首先考虑是否是SQL注入。
    BUUCTF Web[极客大挑战2019] EasySQL_第1张图片

  • 先尝试闭合方式,输入1,1’,1"判断,当输入为1’时报错,所以判断结果语句应该为单引号闭合。
    在这里插入图片描述

  • 根据报错信息,尝试注入,在此之前了解一下万能用户名和万能密码。

补充知识

  • 所谓的万能密码就是绕过登录验证直接进入管理员后台的密码,这种类型的密码可以通用到很多存在此漏洞的网站,所以称之为万能。
  • 最常用的管理员用户名:admin root user test guest
  • select * from table_name where username='xxx' and password ='xxx'
  • 一般验证登录注册查询数据库可能会用以上句型。如果用户密码匹配正确则返回真值,通过验证成功登录。
  • 如果让它不匹配数据库也能返回真值那么就能绕过验证登录。
  • 下面是常用的一些万能用户名和密码
    BUUCTF Web[极客大挑战2019] EasySQL_第2张图片
    BUUCTF Web[极客大挑战2019] EasySQL_第3张图片
    BUUCTF Web[极客大挑战2019] EasySQL_第4张图片

解题

  • 如果我们传入的username为admin’ or 1=1#,随意输入password,那么传入后端验证时,SQL语句就是
select * from table_name where username='admin' or 1=1#' and password ='xxx'
  • 因为sql语句中的#为注释符,也就是
select * from table_name where username='admin' or 1=1
  • 由于1=1恒为真,所以sql语句返回真值,成功绕过验证,得到flag。
    BUUCTF Web[极客大挑战2019] EasySQL_第5张图片

最后

还有其他一些解法,下面是其他解法的链接

  • 风过江南乱的wp
  • 归子莫的WP

你可能感兴趣的:(安全)