BUUCTF-Ez_bypass

本题用到了post&get请求和php的弱类型比较和强类型比较的内容。

访问页面:

根据提示一行一行来 

1-3行讲的是flag.php这里有个flag,4-6给了两个变量,用get的方式获取。

第七行,是一个php的强类型比较,要使gg和idmd5加密后的内容相同,单从MD5内容相同来看,是很难实现的,所以看这个强类型比较。

强比较:使用三个 ''==='' 比较,比较值,也比较类型。先判断a,b类型,若相同,则比较值,若不相同,则返回false

 强类型的绕过有两种:1、使用md5值完全相同的值绕过;2、使用数组绕过

由于这本来已经使用了MD5,那只能使用数组了,构造payload:

/?gg[]=1&id[]=2

回车验证了一下,第一步成功

第9-16行是if的嵌套,意思是passwd变量,用post请求提交,当它不是数值的时候进行下一个if比较,当它和1234567弱类型比较值为true时输出flag的值。

这里涉及两个if比较,不了解is_numeric函数的可以去搜一下,这个if的要求就是passwd不是数字型。

而弱类型比较的特点是:1、使用两个 ''=='' 比较,只比较值,不比较类型;2、a==b   将a,b的值转换成同类型再比较值

这文章有具体介绍php强弱类型的比较特点和绕过方法:php的强弱类型比较_南欢richrich的博客-CSDN博客

具体的弱类型比较规则在这里就不赘述了,因为可以通过弱类型比较的特点构造字符型和数字型进行比较,所以可以构造payload:

passwd=1234567a

题目要求使用post方法,可以使用burp抓包进行改包,也可以用火狐的插件hackbar进行post请求的发送。

最后,在post和get请求的共同发送下,成功获取flag

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值