1.simple_php,难度:1,方向:Web,
题目来源:Cyberpeace-n3k0
题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
给一下题目链接:攻防世界Web方向新手模式第12题。
打开题目场景一看是熟悉的php题目。我就去翻开之前写的涉及php的笔记了,笔记8是涉及到cookie.php文件与php语言关系不大;笔记7的第二题是使用御剑查找index.php文件的备份文件,关系也不大;笔记4中是php的序列化和反序列化,利用wakeup函数的漏洞,关联多了一点,都是涉及修改url.;CTF攻防世界小白刷题自学笔记3-CSDN博客,笔记3的第二题最像,先用御剑扫出隐藏的index.phps源代码文件,然后绕开找茬的判定获取flag。
我试了之前所有见过的方法,还是没法解决问题,所以我不想努力了,直接看大佬的writeup(答案)了。这道题涉及php的弱类型比较和is_numeric()函数,php 弱类型总结 - Mrsm1th - 博客园,详细的弱类型比较看这位大佬的文章,直接举例并自问自答,不当谜语人,非常适合我。简单来说是让a等于任意字母,和数字比较都会被转换成0,如果是数字+字母就只会保留前面的数字(但是如果是字母开头中间有数字还是0),
大佬原话:简单审计下代码,发现需要以get的方式传入两个参数a和b。
a参数的要求 a必须等于0且a为真
b参数的要求 b不能为数字且b大于1234
这道题的核心问题是理解PHP语言的弱类型
所以只要a=abc(任意字母就行),b=1235a(任意大于1234数字加任意字母),a、b的另一种方法:a=00也可以绕过,is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,所以a=00&b=1235%00也行。在url后面输入后直接出来flag。
2.baby_web,难度:1,方向:Web,
题目来源:未知
题目描述:想想初始页面是哪个
打开网站是熟悉的hello world。
初始界面我也不讲逻辑了,我记得是index.php,反正题目是叫我想想。输入index.php后直接又跳转会1.php。打开开发者工具,选择Network模块,发现状态码不正常。
搜了一下状态码的含义,
-
302状态码表示所请求的资源临时位于不同的 URI。客户端应该使用给定的新 URI 来获取资源,但在后续请求中仍然应该使用原始的请求 URI。
- 它通俗来说是告诉客户端,“这个资源现在在别的地方,去那里看看。”
查看响应头部文件,location定位1.php,flag也出来了。
方法二就是使用burp suite抓包看响应了,CTF攻防世界小白刷题自学笔记8-CSDN博客,我的笔记8中(cookie.php文件的响应)方法四有详细的过程,这里就不赘述了(还是懒了)
flag输入,直接成功。