0x01 我的生日
搜索得知哆啦A梦的生日为2112年9月3日,按照题目要求的格式填入21120903,得到flag
0x02 input
右键查看源代码,看到js中的check函数,可知str===flag才能通过,因此可以按照函数的逻辑,在控制台将定义str并初始化,然后console.log调试输出str,即可得到flag。
0x03 刮刮乐
本题以刮刮乐为载体,猜测中奖即为flag,但是一直这么刮下去好像有点费时间。(不过实际下面爆破第5次就出现了flag,好像直接刮更快)
bp抓包用intruder爆破,这里随便加个参数方便跑起来
对比响应报文的差异,找到这个图片
前往对应路径访问
0x04 ctf_judge
一开始看题目意思以为是越权,试了很久一直没有找到突破口,赛后发现是万能密码绕过。
0x05 包罗万象
文件上传,很明显的传木马拿shell
尝试了多种白名单绕过的方式(%00、0x00、0x0a截断,修改文件头,文件类型),但都失败了
期间尝试了扫一下目录,发现有个flag.php
但是打开来什么都没有,就接着之前的文件上传思路做了
随便传一个普通文件,发现会回显绝对路径,我们考虑把木马打包,之后通过zip://伪协议读取木马
并且我们注意到可以通过这里的url可以访问目录
这里现场学一下,zip://绝对路径#压缩包里的路径,注意这里的#要url编码,即%23
蚁剑这里试了半天没连接上,结果是最后文件名不需要接php,#要url编码才能接上
成功拿到flag
0x06 php4fun
提示flag在根目录,那我们需要想办法访问到根目录
刚进来就看到这一坨丑陋的代码,并且注意到通过get方法传参数p
交给chatgpt美化一下
显然上面的协议被过滤了,无法通过它们访问根目录flag文件,并且上面也有说到“..”也被过滤了,无法通过“../”实现目录穿越。最后尝试php伪协议file://localhost/flag成功拿到flag
0x07 BabySqliv2.0
题目提示支持中文账号(英文默认占一个字节((窄字节),中文占两个字节(宽字节)),因此想到宽字节注入,根据测试,发现0x,union,select,where都被过滤置换为空。
获取数据库名 web_sqli
name=admin%df%27%20and%20updatexml(1,concat(1,database()),1)%20--+&pw=1
获取web_sqli的表名 fl4g,user
name=admin%df%27%20and%20updatexml(1,concat(1,(seSELECTlect%20group_concat(table_name)%20from%20information_schema.tables%20whWHEREere%20table_schema=database()%20limit%200,1)),1)%20--+&pw=1
同理,依次获取fl4g列名,获取字段,获取flag,获取flag时因为updatexml返回的最大长度为32,所以需要进行分隔,最后得到一个base64编码后的字符串,进行解密得到flag为GXY{g0Od_job1im_so_vegetable}
0x08 100块钱都不给我
用御剑扫描,发现/robots.txt目录,打开得到
访问/index.php1目录,
由$a = isset($_GET['ctf']) ? $_GET['ctf'] :可知使用GET方法传参,变量为ctf,我们让?ctf=phpinfp,得到flag
0x09 shop
打开压缩包,里面真的好多好多东西,然后发现压缩包里面给了源码,根据提示我们要购买flag.
压缩包里的db.sqlite文件是数据库文件可以看到账号id=13,user_id=16的用户有30000余额,尝试越权。
先尝试直接修改订单金额,不行,了解到会通过验证数字签名验证数据是否被篡改过。
RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE的值在settings.py中提到在secret.key文件中,值为”zhinianyuxin”。
编写计算数字签名的脚本。
抓包改buyer_id,order_id,good_id,signature
成功获取flag
0x01 大白
根据提示010editor修改图片长宽高
通过查找信息我们知道,下图所划指示该图片的宽和高
修改高后,获得flag
0x01 一眼就解密
一眼base64编码,在线解码得到flag
特别鸣谢:瑶神、粦神