你真的会PHP吗?
首先我们来到欢迎界面,看到了have fun!再无其他信息,测试了几下发现需要源码,在返回包找到了提示

西普CTF-你真的会PHP吗?-以夕阳落款

一般只注意到hint这个字段,然后去代码审计了,但是Server这个信息也很关键,这个信息告述你运行系统是win32位的,这和64位的解法不一样。

hint: 6c525af4059b4fe7d8c33a.txt

Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.2.17

 

通过源码可以得到这几个信息

1、post提交number不为空,而且不为数字(由is_numeric()函数判断)

2、$req['number']!=strval(intval($req['number'])) number的值经过str转化之后要相等

3、不是回文数

 

绕过问题1 需要用截断,网上找到的%0c,原理是/f这个字符没有被过滤,显然坑了我好久,后来我用%00成功了。。。

绕过问题2 网上有一些资料,是一个叫三个白帽的比赛,其中提到三个方法,只有方法一可以借鉴,文中提到intval函数是有最大取值范围的,超过了会还原最大值,但是不同位数的系统,数字不一样,我前面说了,看到信息这个系统是32位的,也就是说还原的值为2147483647

西普CTF-你真的会PHP吗?-以夕阳落款

这样通过拼接两次绕过的结果,就可以了

payload:POST提交 number=%002147483647

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: