1、题目研究
看题很明显的SQL注入,做题时习惯看源码但什么都没有发现。
所以尝试闭合方法,随便输入1、1'、1''密码随便输入即可。
当输入1和1''时会出现以下的提示,

但输入1'时会报错,所以语句为单引号闭合。

2、万能用户名/密码
既然知道了是单引号闭合,现在就尝试注入,首先了解一下万能用户名和密码。
一般的,库验证登录注册查询数据会用到以下的句型,如果用户与密码匹配正确则返回真值通过验证成功登录。
select * from table_name where username='×××' and password='×××';
2.1、万能用户名
如果不匹配数据库也能返回真值那么就能绕过验证登录(万能用户名)。如果我们传入的username为1' or 1=1 #,随便输入password,那么传入后端验证时SQL语句为
select * from table_name where username='1' or 1=1 # ' and password='xxxxxx' ;
注:因为SQL语句中#为注释符,那么SQL语句为:
select * from table_name where username='1' or 1=1
因为1=1恒为真,所以SQL语句返回真值,成功绕过验证得到flag

2.2、万能密码
同样的万能密码同理
当传入1' union select ××,××,××,database()#
注:union为联合查询多张表,××,××,××为两张表查询字段的数量
当尝试输入时1' union select 1,database()#会出现提示,字段数量不一致

所以尝试输入1' union select 1,2,database()#时会得到flag
文章讲述了如何识别和利用SQL注入漏洞进行测试。通过闭合方法发现单引号闭合问题,然后利用‘1’OR‘1’=‘1’构造万能用户名绕过验证,以及使用‘UNIONSELECT’获取数据库信息,实现万能密码的运用,最终获得系统权限。
2万+

被折叠的 条评论
为什么被折叠?



