绕过strcmp 题型

[极客大挑战 2019]BuyFlag

点击右上角的菜单

题目是让我们买flag,那就点击payflag

但是提示告诉我们钱不够

如果你想要买这个flag:你必须是来自CUIT的学生;你必须输入正确的密码

25493723eea241e1a0722fc851759779.png

 

先看一下源代码里面有没有什么东西,在最后发现代码

d8bad85cbb3a46a39e75ea7a791f1901.png

 

只要$password == 404为真,那么,就可以绕过。函数is_numeric()判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假。

is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后 

看到新的提示,你必须是来自CUIT的学生,直接抓包看看是什么情况

只有在cookie:user=0,那我们将其换为1试试

b124dcc5e7074157a97e461348bf19a3.png

 

显示长度太长

可以构造1e10来表达100000000

c09ddd8aaaad4a799d96ae556c8876ff.png

 

还能通过常用绕过strcmp方法:money[]=1, 对于strcmp如果强行传入其他类型

反而会出现报错,恰好利用这一点就可以达到绕过的目的了

 

54b0c60e4d8b4e8d9c87e23947ba728a.png

7010d89b37724084b76f1d37b70f113c.png 

 

两种方法都是可以的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值