欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CTFHUB 2017-赛客夏令营-Web-Injection V2.0

程序员文章站 2022-03-09 22:37:51
...

参考:https://blog.csdn.net/Mr_Shiyang/article/details/107974827

CTFHUB 2017-赛客夏令营-Web-Injection V2.0
登陆页面如图所示

用户登陆两种业务查询方式:
一种是直接对用户输入的账号名和密码进行查询CTFHUB 2017-赛客夏令营-Web-Injection V2.0

另一种是针对用户输入的账号名进行查询对应的密码,再和用户输入的密码做比较
CTFHUB 2017-赛客夏令营-Web-Injection V2.0

step1:
开始输入username=1,admin=1,提示用户名不存在,第二次输入admin:1
提示密码错误,那么我们可以确定应该是第二种业务查询模式,否则应当响应用户名或密码输入错误

第一想法尝试**数据库,找到flag,输入各种提交参数都被过滤了,响应中提示hack。

逐一尝试过滤的参数:(),space, ’ , " , ‘+’, ‘/’,union,order,or,and等等,注意逐一测试时不要引进其他非法参数,遵循单一变量原则

尝试空格,括号,加号都被 过滤,其他没有被过滤

既然括号被过滤了,那么想要**数据库就不可能了,各种**语句都离不开(),也没有过滤()的方法,所以**就不可行

step2
既然**不可行,我们就尝试登陆吧,根据代码逻辑
select password from xx where username=xx;
if(password==pass)
then login

关键要构造两次密码是一样的,那么就需要第一次从数据库查询的密码和我们输入的密码结果一样,联合查询没被过滤,那么我们可以构造联合查询,
并且用/**/过滤空格,查询时让用户名为false,使得查询语句的结果是我们输入的密码。
因为不知道admin的闭合方式是双引号闭合还是单引号或者是其他方式,所以需要逐一尝试

payload:
双引号闭合

user=aadmin'/**/union/**/select/**/1/**/or/**/''1''=''1&pass=1

单引号闭合

user=aadmin'/**/union/**/select/**/1/**/or/**/'1'='1&pass=1

CTFHUB 2017-赛客夏令营-Web-Injection V2.0
CTFHUB 2017-赛客夏令营-Web-Injection V2.0
CTFHUB 2017-赛客夏令营-Web-Injection V2.0

注意 刚开始使用max hackbar,从博客上直接复制语句到max hackbar怎么也不好用 用样的语句放到burp里(当然这里面是我手动输入的)就出结果,用max hackbar就是提示用户不存在,都日了狗了,以为是hackbar不好用,后来发现是因为直接从网页上复制的文字里其实有很多猛的看起来一样,实际不一样,如下图所示,还有很多不可见字符,所以maxhackbar才不起作用(后来,我右在hackbar里手动输入上面语句,就好使了),注意这点,当然以后尽量用burp或者手动输入不直接复制粘贴(即使粘贴也要放大对比,或者放到记事本里查看下)

相关标签: CTF 安全漏洞