目录
view_source
get_post
robots
backup
simple_js
xff_referer
weak_auth
command_execution
simple_php
view_source
知识点:
查看网页源代码的几种方式:
- 按F12键,点击elements可以查看源代码
- 快捷键:ctrl+u
- 在url前面加上view-source:
get_post
知识点:
get和post区别:
get方法提交可以直接在url中写入:
post提交我们可以在火狐浏览器使用插件HackBar:
robots
来自百度百科的解释:
思路:看完上述解释后,我们首先去看看robots.txt文件。
此时就会提示我们flag位置
backup
题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
看完题目描述我们就应该把重点放在备份文件上,因此就需要先了解一些关于备份文件的知识。进入第一个页面后我们就有了大概方向,从备份文件名下手。接着去百度搜索
备份文件后缀名:“.git” 、“.svn”、“ .swp” “.~”、“.bak”、“.bash_history”、“.bkf”
然后我们发现该备份文件的后缀名是bak,访问该地址下的index,php,bak;然后我们会下载相应的文件。用记事本打开就可以看到Flag
cookie
题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
看完题目描述我们知道这道题考的是cookie知识点,首先百度。
这时候我们发现它是存储在用户本地的,此时我们果断F12,寻找一下cookie。
此时我们访问cookie.php,看一下有没有新的线索
线索很明显,我们直接看response。请求和回复都是F12查看。
disabled_button
题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
看完题目描述我们应该首先了解下前端按钮知识。大概率与按钮属性有关。
发现是因为该标签添加了该属性所以不能点击,那么我们如果把这个属性删除,那么我们就可以点击此按钮;此时我们F12。
删除该属性,然后点击flag。会发现flag显示在页面。
simple_js
知识点总结:
- 首先就是建议大家掌握一下js基本语法
- 编码与解码知识
这道题进去我们输入密码之后会出现如下界面,确定之后就是就是一个空白页面,没有任何线索;此时我们只能F12。
进入我们会发现一个<script>代码,这是我们解决这道题的唯一线索。这就需要我们有一定的js基础,能够理解代码
<script>
//定于一个dechiffre函数
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(',');
//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;
//console.log(p);
return pass;
}
//55,56,54,79,115,69,114,116,107,49,50
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>
通过对上述代码的分析我们发现输入密码之后的弹窗与密码无关,因为这个函数与参数无关,返回结果都是一样的;所以我们把思路转移到这
很明显这是编码后的十六进制,我们对其解码可以得到。
解码思路:首先我们发现这是一个前面加了\x的十六进制,首先将其转换为10进制,然后从ASC||码表中找对应的字符(也可以使用js中函数fromCharCode())。
但此时我们要想从几个数字得到Flag,然后我们从题目描述发现已经告诉了我们Flag格式
那么我们就可以尝试把这几个数字变一种形式,尝试一下看看是否会成功。
<script>
n=String.fromCharCode("55,56,54,79,115,69,114,116,107,49,50");
document.write(n);
</script>
此时我们把返回的字符串放回题目给的格式中,会发现这就是我们要找的Flag。
xff_referer
题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
看完题目描述我们唯一能做的就是了解xff和referer,百度搜索xff
对xff和referer有了一定了解之后,我们知道在http头字段中,所以我们进行抓包(我这里用的burpsuite),然后根据她的提示进行伪造
weak_auth
题目描述:小宁写了一个登陆验证页面,随手就设了一个密码
看完题目描述我们就知道这是一个密码爆破,通常在爆破之前我们先进行尝试一下常见的密码,如果不成功的话在进行爆破。
方法一:
我们尝试用python代码进行爆破:
import requests
url="http://61.147.171.105:52883/check.php"
with open("password.txt","r") as t:
for i in t.readlines():
data1={"username":"admin","password":i.strip()}
flag=requests.post(url,data=data1).text
if 'cyberpeace' in flag:
print(flag)
break
方法二:
用bp抓包进行爆破,此处就不详细讲解。
command_execution
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
知识点:Linux命令
Linux命令总结
看完题目描述我们首先应该了解一下waf是什么,
然后我们唯一的线索就是ping这个输入口,题目的意思是命令执行,那很有可能就是利用ping这个命令传入一些命令并且可以执行得到我们想要的结果。
然后我就开始尝试:
命令:ls /(意思为根目录下的文件夹)
果然执行出了我们想要的结果
随后我们就开始查找Flag,输入命令find / -name "flag*"(/表示的是根目录,*表示的是通配符)
随后查看第一个文件内容cat /home/flag.txt
即可看到Flag 。
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;
}
?>
我们知道它是服务端的语言,所以a和b应该是web传过去的。
我们随便输入一个a使第一个if为真,输出flag。但是我们发现这个Flag是错误的;所以继续让第二个if正确,输出第二个flag。
注意:php是弱类型语言。php弱类型问题