目录
[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/ , 查看更多