1.view_source
进入题目场景后提示"FLAG is not here"
联系到题目标题"view_source",想到应当尝试查看源代码,但常规的鼠标右键无法进入,此时需 要按下F12进行查看,不同浏览器会以不同的方式展示源码,以下为chrome页面
拿到flag: cyberpeace{c3cd8e455e82bd6ef2a5843b25be1a16}
(此处右键flag行选择"以html格式修改可以复制)
2.robots
根据题目名字和题目里面的相应描述很容易联想到robots协议
在URL栏键入/robots.txt查看协议,进入以下页面:
由此我们知道了一个地址名为"flag_1s_here.php",我们在url栏中键入进行访问:
得到flag: cyberpeace{5c6d502958f6ed9584818e040a505d0c}
3.backup
进入题目场景后获得提示:
常见的备份文件的后缀有: .git .svn .swp .~ .bak .bash_history
逐个进行尝试,发现后缀是.bak
访问后下载以记事本方式打开:
找到flag: Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
4.cookie
根据题目提示,我们首先打开开发者工具来查看cookie:
发现一栏名称为"look here"并且其值为"cookie.php",我们在URL栏里对其进行访问:
给出了"See the http response"提示,即查看http响应包,在此处,有两种方法可以解决问题,一是在开发者工具"网络"一栏里访问cookie.php的数据包,并在响应头里发现flag
//取自攻防世界官方wp
之后是第二种方法,使用burpsuit进行抓包:
首先挂上代理,之后对cookie.php进行访问,在bp的proxy里将所得发送给repeater:
在repeater里进行send,得到结果:
得到flag: cyberpeace{d6b8bc2a2a0be09b761176ba8193c26a}
5.disabled_button
进入场景,发现了一个如题目所说的"不能按的按钮",首先打开开发者工具:
将光标悬停在"disabled"上面右击鼠标,选择修改属性,将"disabled"删除:
之后发现"flag"按钮变的可以按了,果断按下:
得到flag: cyberpeace{fa4872d8fe1ddfa2361f464235ea7f78}
6.weak_auth
根据题目名字和描述"随手设了一个密码",很容易联想到弱口令,在网上搜索常用弱口令,详见
常用弱口令_Amdy_amdy的博客-CSDN博客_常见弱口令
我们的目标往往是获得管理员权限,很容易知道username为admin,然后我们通过弱口令密码的逐个尝试,在尝试到"123456"时登录成功:
得到flag: cyberpeace{c35e7d2b759aa206d71f881f02f742b1}
7.simple_php
进入题目场景:
收先要读懂该php代码:
第一个if语句:如果a==0并且a!=0,输出flag1;
第二个if语句:如果b为数字,退出;
第三个if语句:如果b>1234,输出flag2;
这些判断逻辑看起来很荒唐,但其实了解了php的特性之后这些都是有方法绕过的,不同于c语言,php中有两种比较"==",和"===",前者为弱类型比较,而后者为强类型比较,"=="会先将两者转化为同一类型,再做比较,而"==="会同时比较两者的值和类型,知道了这些之后,我们进行如下操作:
1.以get方式提交a='0'
访问后得到flag1
2.以get方式提交b=1235a
访问后得到falg2
合并后得到完整flag,也可以合并访问:
得到
由此,得到flag: Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
8.get_post
进入题目场景,开门见山,让我们以get方式提交一个名为a,值为1的变量
页面显示
POST无法通过URL栏提交,我们使用googl插件"HackBar"进行提交:
首先点击"LOAD"自动填写URL栏,之后"Enable POST",再"Body"栏输入"b=2",然后"EXECUTE",进入页面:
得到flag: cyberpeace{bde0e96c4bf1de9a4cadf3d14dc667e0}
9.xff_referer
通过题目名字和描述,知道本题于xff伪造和referer有关,进入题目场景,提示ip地址必须为123.123.123.123,挂上代理刷新页面,进入burpsuit,进行xff伪造:
点击forward,成功进入第二个页面,提示必须来自https://www.google.com,进入burpsuit,伪造referer:
点击forward:
获得flag: cyberpeace{c72740f64f32602b175d2c69149123f2}
10.webshell
进入题目场景,发现有一串php代码:
在php中,eval()函数的作用为将括号里的字符串当作php代码处理,联系题目名webshell,我们使用AntSword工具,add一个新shell,输入题目场景的URL,并且由题目已知密码为shell,添加后进入:
找到flag.txt文件,在其中找到flag
得到flag: cyberpeace{ef86ce18319d552fb09d047bdf409c34}
11.command_execution
题目描述里提示,写了个ping功能但是没有写waf,此时,我们应该想到利用截断来执行新命令,可以参照CTF关于ping命令注入问题(1)_欢迎来到神林的博客-CSDN博客
在栏中随意输入一个地址,加上一个截断符,并在截断符后加上相应语句,首先用:
find / -name "flag.txt"语句寻找文件位置,如图:
PING后得到以下结果:
由/home/flag.txt我们就知道了目标文件的位置,接着,我们使用cat / home/flag.txt 语句获取flag
之后获得如下结果:
得到flag: cyberpeace{aad85f9023e2c4964be35a99d47daba4}
12.simple_js
首先进入题目场景,要求我们输入密码:
我们先随便输入一个密码,得到如下反馈:
显然是密码错误的提醒,之后我们右键查看源码:
为了代码的易读性,我们对该代码进行一定的整理,这里参考史上最详细系列--攻防世界web(新手7-12)_青衫_渗透新手的博客-CSDN博客 的整理:
首先是对函数的定义,暂且先不管,等到调用时再回过头来看,直接看主函数,主函数中第一句就对所定义的dechiffre函数进行了调用,并以一串16进制数字符串作为了形参,我们对dechiffre函数进行审计:
1.首先将传入的形参进行转化:
结果为:
同时,在函数中定义了一个字符串pass:
我们对这两传数字进行ascii码转化,结果分别为:
这时我们发现,pass的字符串定义的就是我们输入密码后反馈给我们的文字!到这一步,我们完全可以假设另一段就是本题的flag,我们将这段字符包上Cyberpeace{},提交flag,也的确是正确的,但若是为了练习,可尝试将代码看懂,如图:
得到flag: Cyberpeace{786OsErtk12}