第5天(共3题)
Web
[GXYCTF2019]BabyUpload
先上传一句话木马,修改文件后缀名为php,但是返回页面提示后缀不能有ph
常用的后缀名绕过都带有ph,因此这道题采用上传.htaccess文件(上传时注意使用BP抓包将Content-Type改为image/jpeg)
上传成功后再上传一句话木马,由于这道题允许jpeg图片而不允许png图片,因此注意修改对应的Content-Type为image/jpeg
连接蚁剑,同样通过文件目录获得flag(网站限制使用命令)
[SUCTF 2019]CheckIn
这道题要用到新的知识点:.user.ini文件
由于无论如何修改木马文件后缀,网站都会返回illegal suffix!(非法后缀),因此这里考虑的是.htaccess文件和.user.ini文件
第一步尝试上传.htaccess文件,网站提示:not image!说明不行,而且上传之后在上传目录中会出现index.php文件
第二步尝试上传.user.ini文件:
GIF89a
auto_prepend_file=upload.png
.user.ini文件文件中有两个项:
auto_prepend_file
和auto_append_file
作用都是指定一个文件(例如upload.png),那么该文件就会被包含在要执行的php(通常是index.php)文件中。
auto_prepend_file
是在文件前插入;auto_append_file
是在文件最后插入
发现上传成功,然后上传一句话木马(这里就直接是png文件了,也不用再抓包修改后缀)
然后用蚁剑连接http://632b857c-3a4f-4380-a7c0-19fc65cf4ea4.node5.buuoj.cn/uploads/b2d886d625f32d1d3e5fd28402d302e9/index.php
,注意这里不是upload.png而是index.php,因为upload.png的内容会包含在index.php中
大概过一两分钟就能连接上了,因为.user.ini文件有300秒的生效时间,接着访问根目录拿到flag
[MRCTF2020]Ez_bypass
打开网站就能很直观的看到源代码提示
具体来说需要满足:
md5($id) === md5($gg) && $id !== $gg
和
!is_numeric($passwd)
$passwd==1234567
第一条可以通过数组绕过
第二条可以通过数字开头的字符串绕过
md5()无法处理数组,所以如果传入的两个参数都是数组,那么md5()函数返回的都是NULL,NULL=NULL成立 :
?id[]=1&gg[]=2
PHP的 ==
在比较不同类型的数据时,会首先将==
两边的数据转化为同一类型,字符型数据与数字型数据进行比较,字符型数据会转化为数据型数据,比如1234567a会转化为1234567再进行比较,同时也绕过了is_numeric()函数(该函数即可检测数字也可检测字符型数字,但若里面带了字母就不会返回真):
passwd=1234567a
注意1234567a不带引号
即可拿到flag