概述
i春秋 WEB GetFlag
一天一道CTF题目,能多不能少
打开网页,点击login来到登陆页面:
发现验证码是截取MD5的验证:substr(md5(captcha), 0, 6)=3aab4a
编写脚本来跑验证码:
import requests
import base64
import sys
import hashlib
def getMd5(index):
for i in range(100000,100000000):
x = i
md5 = hashlib.md5(str(x).encode("utf8")).hexdigest()
if md5[0:6] == index:
return x;
print(getMd5("3aab4a"))
最后的到验证码:
既然能够得到验证码了,开始进行登陆测试
最后发现登陆框的username处存在注入,尝试万能密码登陆,成功:
进入网页看见三个文件,全部下载,最后发现一个提示(flag在根目录下):
开启抓包,抓下载链接的包,修改参数:
仿佛在逗我~
既然是根目录那就猜是不是/var/www/html/Challenges/flag.php
果然,得到源码:
源码:
<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
{
die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
eval("$spaceone = $f");
}
catch (Exception $e)
{
return false;
}
if ($spaceone === 'flag'){
echo file_get_contents("helloctf.php");
}
?>
尝试下载helloctf.php
,但是不允许下载:
那就只能代码审计了,,,,
题目的要求提交flag参数到flag.php页面,然后页面会将flag参数对应的值赋给$spaceone,当POST提交的flag=flag的时候flag就会出现!!!
但是提交flag=flag什么都没有显示,发现过滤了很多的东西
没过滤分号?试试,flag=flag;还是没得卵用~~
只能等死了吗,,,看了看大佬的wp,好像有个啥php字符串特别的表示方法
百度一下PHP字符串表示方法,得到:
这就快乐了,不过这个要换行,用url编码一下传过去(注意不要太长,否则第一个if就过不了):
get flag:flag{04bcb2ca-39b9-4359-ae9b-22c5925cd9e0}
最后
以上就是忧虑大树为你收集整理的i春秋 WEB GetFlag的全部内容,希望文章能够帮你解决i春秋 WEB GetFlag所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复