种地 发表于 2025-4-8 04:16:38

polarctf之2024年冬季挑衅赛--web

1. 狗黑子的RCE

考察远程命令执行, 但是过滤了大多命令, 一个GET传参, 一个POST传参
<?php
error_reporting(0);
highlight_file(__FILE__);
header('content-type:text/html;charset=utf-8');


    $gouheizi1=$_GET['gouheizi1'];
    $gouheizi2=$_POST['gouheizi2'];
    $gouheizi2=str_replace('gouheizi', '', $gouheizi2);

    if (preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $gouheizi1)) {
      echo("badly!");
      exit;
    }
    if($gouheizi2==="gouheizi"){
      system($gouheizi1);
    }else{
      echo "gouheizi!";
    }
?>https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209163716475-874948157.png
再通过修改GET传参的参数, 即可得到flaghttps://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209163758628-1541184463.png
#flag{d22add0cf74c46feffe95e7f8064136b}2. xxmmll

非预期
直接用工具dirsearch扫目录https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209164509865-53115013.png
https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209164530523-641533034.png
#flag{ce22bbe170d234645361239b395dbc5d}预期解
前端页面, 通过BurpSuite抓包并发送, 观察返回包内容, 存在目录xxmmll.phphttps://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407114227080-2008562573.png
https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407114858728-562299455.png
随便输入点内容, 报错Invalid XML input.
那我们输入一个xml试试:
<?xml version="1.0" encoding="UTF-8"?>
<HelloWorld>
        <Message>hello, world</Message>
</HelloWorld>https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407115610292-1460443793.png
#flag{ce22bbe170d234645361239b395dbc5d}3. button

https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209165214821-36456378.png
点按钮就会飞走, 没办法点, 查看页面源码https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209165308197-78295559.png
发现flag字样, 查看js源码https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209165412442-775084995.png
访问该目录, 查看源代码得到flaghttps://img2024.cnblogs.com/blog/3446671/202412/3446671-20241209165455981-1839532075.png
#flag{ce50a09343724eb82df11390e2c1de18}4. 井字棋

通过与ai对战, 发现最后的结局只能是平局, 无法得到flag
另辟蹊径, 通过BurpSuite抓包, 发现平局也是显示ai赢https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241210231800808-28607150.png
将其改成player即可(为什么是player可以去看看前端代码)https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241210231828391-950233018.png
#flag{288CCA1ADB228E10EED4BFD85AC544B8}5. 简单的导航站

点开靶机环境, 发现有注册页面, 直接点开注册即可(不需要管404)https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211102450608-199655641.png
然后直接点开登录界面, 用刚刚注册的用户登录https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211102532053-595278059.png
点开有个php代码, 代码审计一下
?php
header("Content-Type:text/html;charset=utf-8");
show_source(__FILE__);
include('user.php');

$user1 = $_GET['user1'];
$user2 = $_GET['user2'];

if ($user1 != $user2) {
    if (md5($user1) === md5($user2)) {
      echo '用户名:' . $user;
    } else {
      echo 'MD5值校验出错啦啦啦......';
    }
} else {
    echo 'user不能相等!';
}
?>

md5($user1) === md5($user2)直接用数组绕过即可https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211102654014-682694749.png
得到用户名的字典后, 去查找下登录密码, 在页面源码中发现https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211102745524-1544717497.png
用BurpSuite的爆破模块https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211102933783-1084942236.png
得到正确的用户名, 登录发现是一个文件上传题目, 直接上传一句话木马https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211103152520-1859672706.png
没回显路径, 就用正常的路径.../uploads/一句话木马.php, 用蚁剑进行连接https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211103316768-645154947.png
再用BurpSuite的爆破模式来验证这些flag哪个是正确的https://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211103443599-1826671006.png
#flag{T4PwCg1RrQNsO4EcrQmU}6. Note

用dirsearch扫目录, 发现flag.txthttps://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211105638565-237149786.png
直接访问得到flaghttps://img2024.cnblogs.com/blog/3446671/202412/3446671-20241211105652849-608775440.png
#flag{4596b24ab4ffcaf5472e9db97d21a3a1}7. 坏掉的上传页

访问靶场, 发现没办法上传, 用dirsearch扫描目录, 发现config.phphttps://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407112152988-1092333970.png
访问查看数据库信息https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407112237365-1781509005.png
可以看出来定义了一个DB_FILE的常量, 它的值是由UPLOAD_PATH常量与"database.db"字符串拼成的。
可以直接编写python脚本上传木马exp
import requests

url = "http://e40a71ed-e374-46f9-b80d-53608ece144d.www.polarctf.com:8090/"

muma = {'file':open("E:\\桌面\\muma.php", "rb")}

response = requests.post(url, files = muma)

if response.status_code == 200:
        print("文件上传成功")
        print("服务器返回的信息: ", response.text)
else:
        print("文件上传失败")
        print("错误码: ", response.status_code)https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407113303712-1712064486.png
访问/database.db, 得到完整的上传路径https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407113339705-1085831905.png
通过蚁剑进行连接即可https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407113602075-1425593640.png
#flag{73b974596dc61737dbe1d52ec2e84433}8. 赌王

https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407151237959-1484481535.png
根据提示, 需要三个图标相同才能拿到hint, 我们通过抓包进行不断地旋转https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407151345215-966151651.png
https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407151537313-59265936.png
根据提示, 访问ed3d2c21991e3bef5e069713af9fa6ca.phphttps://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407151709293-1936678999.png
输入1, 发现系统数字是2, 总是会比我们输入的数字大一。https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407151827111-1773136887.png
测试下xss漏洞或ssti漏洞。发现是xss漏洞, payload为:https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152042130-590353774.png
将alter换为confirm再次尝试, 成功弹窗https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152122019-2135795346.png
访问目录e744f91c29ec99f0e662c9177946c627.phphttps://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152254120-222026205.png
尝试ping 127.0.0.1, 返回权限不足!
重新返回查看页面源码发现提示https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152434235-207009017.png
https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152449677-459521161.png
直接X-Forwarded-For构造地址为1.1.1.1, 然后执行命令ls /https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152704736-1473878202.png
https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407152742608-1044269613.png
#flag{fae0b27c451c728867a567e8c1bb4e53}9. ezezser

发现php源码, 但是好像没有利用的点, 通过dirsearch扫描目录, 发现存在git泄露https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407164241122-82113556.png
用githacker工具恢复源码https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407164321033-841806662.png
要多回滚几次, 才能得到真正的源码, 通过git log --all命令, 查看历史版本, 进行依次尝试https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407164700763-1855849677.png
发现是最初的版本, 通过命令git reset --hard 0c635537b773cdd87268e7dbdc51f985eca0b0b4https://img2024.cnblogs.com/blog/3446671/202504/3446671-20250407164820466-1172726812.png
代码审计
页: [1]
查看完整版本: polarctf之2024年冬季挑衅赛--web