Contents
view_source
根据题目描述,我们发现想要查看源代码但是右键却被禁用了,所以我们可以用Ctrl+U或者直接F12查看源代码即可发现flag
get_post
直接从地址栏GET提交变量,然后用Hackerbar进行POST提交即可获取flag
robots(*)
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。 robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
参考自百度百科
根据提示我们直接查看网站根目录下面的robots.txt文件,然后我们打开页面disallow的文件即可获取flag
backup(*)
如果网站存在备份文件,,常见的备份文件后缀名有:“.git” 、“.svn”、“ .swp”“.~”、“.bak”、“.bash_history”、“.bkf”
经尝试我们发现在index.php文件后面添加.bak可以下载其备份文件,然后下载打开即可获得flag
cookie
我们抓包发现它的cookie栏提示我们看cookie.php文件
然后又提示我们看http响应,我们拦截一下它的响应
然后发现了flag
disabled_button
由题目我们知道,这题叫做不可见的按钮,然后我们发现flag按钮是虚的,无法点击。
我们直接更改前端,把disabled的属性去掉即可获取flag
weak_auth
根据提示我们随便输入root用户密码随意,发现前端提示我们用户名为admin,那么这样这道题就成了一个单纯的暴力破解题,我们放到burp进行爆破,然后爆破出密码为123456
然后我们输入admin+123456即可得到flag
command_execution
这是一道命令执行题目,我们首先扫描一下它的目录到底有什么东西,因为命令执行一般都是通过cd命令遍历从而来获取电脑上的重要文件
我们用find命令来寻找带有flag命名的文件
find path -option [ -print ] [ -exec -ok command ] {} \;
然后我们用cat命令查看flag.txt即可获得flag
simple_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;
}
?>
我们发现其实这是考我们php弱类型比较,== 和 ===
== 只要值相等即相等,不比较类型,字符串会转换为整数
=== 类型和值都相同即相同
然后获得flag的方法是
a==0且a为真
b的值大于1234且b不为数字
这个其实就是考我们php中当字符串与数字进行比较会把字符串第一位字符前面的数字转换为其值,进行比较。例如
a1234=0
1234a=1234
所以我们输入a=0a
和b=1235a
即可获得flag
xff_referer
这道题考我们对于http报文的理解,我们根据题意抓包更改对应的参数即可
X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
参考自百度百科
X-Forwarded-For:123.123.123.123 Referer:https://www.google.com
webshell
由题目描述我们得知一句话木马存在于index.php中,所以我们直接用蚁剑连接即可
simple_js
<script type="text/javascript">
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) );
</script>
我们根据分析,flag就在它最后给我们的16进制代码中,我们将其转为字符串,得出一个数组55,56,54,79,115,69,114,116,107,49,50,然后再将其每一组数字进行ASCII码处理得到最后字符串为786OsErtk12。
规范flag格式,可得到Cyberpeace{786OsErtk12}