1.view_source
问题:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
解决方法:点入网页再ctrl+u得到(注释)flag。(或者在网址前加view-source:)
2.get_post
问题:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
解决方法:将题目场景里的链接复制到火狐浏览器中,然后再浏览器中的链接后面加 /?a=1,再按Fn+F12,点到HackBar,点Load url,再点Post data,再下面空白输入b=2,最后点Execute得到Flag。
3.robots
X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
解决方法:点开题目场景链接,发现空白页面后在页面网址后面加/robots.txt,回车得到下面的页面:
User-agent: *
Disallow:
Disallow: f1ag_1s_h3re.php
然后复制f1ag_1s_h3re.php到页面后面(记得把之前的robots.txt删掉),最后得到flag。
4.backup
问题:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
解决方法:在页面网址后面加/index.php.bak,回车进行搜索,右上角会下载一个文件,打开文件得到flag。(如图)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZanZjt8w-1683114718321)(C:\Users\86136\AppData\Roaming\Typora\typora-user-images\image-20230321144636910.png)]
5.cookie
问题:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?
解决方法:点开题目场景链接,在自带浏览器中右键点击检查,找到》这个后,点击“》”后又点击“
应用程序,然后找到cookie,再找到一下的地方并右键点击“使用cookie显示请求”,然后再网页网址
后面加/cookie.php,回车后会看到“see the ttp response",最后在名称那里找到cookie.php并点击
,最后找到flag。
look-here | cookie.php |
---|---|
6.disabled_button
问题:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
解决方法:复制题目场景链接到火狐,右键点击检查,在查看器中删除disabled=“”,然后就可以点开得到flag。
7.simple_js
问题:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
解决方法:复制题目场景链接到火狐,右键查看源代码,复制\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),得到十进制,然后比对ASCIL找出每个字符就行了。
8**.xff_referer**
问题:X老师告诉小宁其实xff和referer是可以伪造的。
解决方法:打开burpsuite,点开open browser,然后复制题目场景链接到burpsuite,就抓包了,然后
右键点击Do in intercept 旁边的response to the request ,再点击Forward ,然后再右键send to repeater,打开repeater,点击send,然后在Request里的User-Agent上面构造X-Forwarded-For:123.123.123.123,再点send,在response中找到,然后X-Forwarded-For:123.123.123.123下面添加Referer:https://www.google.com,最后点send ,在response中找到flag。
9.weak_auth
问题:小宁写了一个登陆验证页面,随手就设了一个密码。
解决方法:点击题目场景(已经告诉了账号为admin),先打开bp,并在自带浏览器中的扩展程序打开proxy进行抓包并爆破得到密码,登入账号密码得到flag。
10.command_execution
问题:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
解决方法:输入127.0.0.1,没有有用的信息,
多次查找目录,找到home目录,重新输入127.0.0.1&& ls /home,发现/home目录下有一个文件叫flag.txt。再使用|连接符使之只打开flag.txt文件,找到flag。(输入127.0.0.1|cat /home/flag.txt)
11.simple_php
问题:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
解决方法:点开题目场景得到如下页面:
<?php show_source(__FILE__); include("config.php"); $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ echo $flag1; } if(is_numeric($b)){ exit(); } if($b>1234){ echo $flag2; } ?>
分析题目:这里三个条件:(1)如果a=0且a为真,我们可以得到flag1。(2)is_number($b)的意思是判断b是否为数字,如果为数字则返回,说明此处的b不能为数字,不然就执行exit()了。(3)要求b大于1234,就可以得到flag2。
综上:b要求非数字并且大于1234,涉及到php的弱类型比较;本文直接给出b=1235a>1234,且b不能为数字,所以直接在网址后面添加/?a=a&b=1235a,就可以得到flag。
12.Training-WWW-Robots
在网址后面添加/robots.txt,出现的代码有Disallow: /fl0g.php,最后在最初的代码后添加/fl0g.php得到flag。
13.PHP2
访问index.php无效,猜测index.phps出现页面,
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?
解析代码:第一个if语句中三等号强判断为“admin”,但若只是“admin”则会输出“not allowed!”,看第二个if语句,urldecode()将 G E T [ i d ] 进行 U R L 编码,从而判断 _GET[id]进行URL编码,从而判断 GET[id]进行URL编码,从而判断_GET[id]==“admin”,所以要使$_GET[id]编码后的结果等于“admin”,那就先得将“admin”进行URL编码。
需要对admin进行两次解码,这道题可以直接通过url编码对照表得知(a为%61),再对%61进行编码得到%2561,所以在网址后添加/?id=%2561din可得到flag。
13.unserialize3
在网址后加/?code=O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}得到flag。
来解释一下:O:7:“chybeta”:1:{s:4:“test”;s:3:“123”;}
这里的O呢就是object对象的意思
数字7代表着对象的函数名有7个占位
然后就是对象名了
这个数字1表示对象里有一个变量
大括号里的s代表的是string类型还有一个i是int型。
14.ics-06
都点了一下发现只有报表中心可以进去,进入报表中心在url中发现?id=1,一开始以为是sql注入结果啥也没探测到,这题脑洞有点,没有任何提示直接爆破id即可获得flag。
步骤:抓包后发送到Intruder,在positions里点击Sniper,在playloads里playload set:1,playload type:Numbers,From:1,To:100000,Step:1,然后直接点击Resource Pool里的Start attack,
看了一下当id=2333的时候包的长度比较长,我们看一下返回包就发现了flag。
15.baby_web
题目描述:想想初始页面是哪个
根据提示我们尝试/index.php页面,发现页面直接跳转到1.php,因此尝试抓包分析,抓包后跳转到Repeater模板,将1.php改成index,php,再发送,在Response模板找到Flag is hidden,发现flag但是隐藏了,在Response模板里点击Hex找到Flag:flag{very_baby_web}。
16.inget
方法一:万能钥匙:?id=1’||'1。
fileclude
include(“文件名”);会将文件中的内容视为代码块接入include所在代码中,输出的只是执行后的结果,文件中的注释、定义等无法查看。
本题中可以控制的变量有file1和file2,file2用于满足if判断要使其内容为“hello ctf”。但是需要注意直接file2=hello%20ctf是不行的,因为file_get_contents()的参数也为文件名,直接file2=hello%20ctf时file2为字符串,需要用data://协议使它当做文件。file1用于提取flag.php中的内容并用base64编码以防止执行,然后通过include输出file1中的内容,也就是base64编码后的flag.php中的内容。
1.使用条件为
allow_url_fopen
:on
allow_url_include
:on
2.用法
data://text/plain,
data://text/plain;base64,
3.示例
1)eg: http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?> #会向file中输入文本数据流<?php%20phpinfo();?>
2)*eg:*http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b #会向file中输入base64解码后的PD9waHAgcGhwaW5mbygpOz8%2b
1.参数详解
php://filter 参数 | 描述 |
---|---|
resource=<要过滤的数据流> | 必须项。它指定了你要筛选过滤的数据流。 |
read=<读链的过滤器> | 可选项。可以设定一个或多个过滤器名称,以管道符(**)分隔。 |
write=<写链的过滤器> | 可选项。可以设定一个或多个过滤器名称,以管道符(\)分隔。 |
<; 两个链的过滤器> | 任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。 |
2.示例
eg: http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php #resource参数=phpinfo.php表示要过滤的数据流为phpinfo.php源文件,reade参数=convert.base64-encode表示要读取数据流,且使用了base64编码转换器(convert.base64-encode)
综上可知本题payload为 ?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello%20ctf
phpinfo.php源文件,reade参数=convert.base64-encode表示要读取数据流,且使用了base64编码转换器(convert.base64-encode)
综上可知本题payload为 ?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello%20ctf