今天开始不能丧气的听天由命,把那个诅咒我考不上的学长删了 ,努力把自己那不高的考研分数发挥到极致,主动联系导师要论文,LeetCode主要是搜索和字符串链表之类的,每天日更博客五道编程题从中选一个最精彩的+专业课学习总结+老师论文学习+各种项目突击。
去特么工作,特么欺负死我了,让我去公司现场一个sql注入,一个XSS,一个文件上传,一个文件包含,一个OS注入,我就磕磕巴巴的XSS还大概弄出来了,剩下的干坐着2个小时。。。。。
不沉迷写小说了,积极自救挣扎。。。。
一上午都在上机,回来又哭了一会儿,跟老师和小伙伴交涉了一下,所以今天的内容有些短小,如果你对哪块的细节感兴趣可以私信我讨论哦~
今日编程的精彩
这题应该是一个小伙伴的夏令营上机题,貌似是清*大学
第一反应是暴力全都穷举一遍,数字顺序还好说,但是符号组合方式多到指数爆炸,没有好想法了,决定看answer了
看到答案之后,我觉得我差劲的原因来了,只想着字符串一样的穷举,但是它是个算数呀,每次都是要2个,然后4*3 = 12种,然后剩下三个数,再这样取两个,3*2 = 6,2*1 = 2每次可以有加减乘除4种运算之一,所以总共是12种取法*4种运算*6种取法*4种运算*2*4 = 9216种可能
官方给的思路也比较清晰:把这四个数放到一个列表中,每次取两个并选一个操作,把计算结果放入列表中代替这个数,这样数字就少了一个,直到数字只剩一个看是否是24
官方给的答案里面有些不太常用的语法来处理浮点数的问题,还挺好的,先学习一下,一下来自官方,今天心情不太好,其实这题冷静下来能分析出些思路的:
今天哭太久了,明天重做一下
class Solution {
public:
static constexpr int TARGET = 24;//这里的constexpr就是升级的const编译器有优化第一次见到
static constexpr double EPSILON = 1e-6;//浮点数不能用==比较,所以是用相减小于一个数来算的,每次我都想偷懒
static constexpr int ADD = 0, MULTIPLY = 1, SUBTRACT = 2, DIVIDE = 3;
bool judgePoint24(vector<int> &nums) {
vector<double> l;
for (const int &num : nums) {
l.emplace_back(static_cast<double>(num));//这里的强制类型转换的方法也是第一次见到
}
return solve(l);
}
bool solve(vector<double> &l) {
if (l.size() == 0) {
return false;
}
if (l.size() == 1) {
return fabs(l[0] - TARGET) < EPSILON;
}
int size = l.size();
for (int i = 0; i < size; i++) {//枚举两个数,因为注意/和-是有顺序的,+和*是没有顺序
for (int j = 0; j < size; j++) {
if (i != j) {
vector<double> list2 = vector<double>();//开始做挑选工作
for (int k = 0; k < size; k++) {//把没选的先放进去
if (k != i && k != j) {
list2.emplace_back(l[k]);
}
}
for (int k = 0; k < 4; k++) {//开始枚举
if (k < 2 && i > j) {//如果是+和*没有顺序就不重新算一下了,而且i > j前面算过了
continue;
}
if (k == ADD) {
list2.emplace_back(l[i] + l[j]);
} else if (k == MULTIPLY) {
list2.emplace_back(l[i] * l[j]);
} else if (k == SUBTRACT) {
list2.emplace_back(l[i] - l[j]);
} else if (k == DIVIDE) {
if (fabs(l[j]) < EPSILON) {
continue;
}
list2.emplace_back(l[i] / l[j]);
}
if (solve(list2)) {
return true;
}
list2.pop_back();
}
}
}
}
return false;
}
};
//有一种很风骚的方法计算,但上机那种不用炫技,C++的lamda表达式
unordered_map<string, function<int (int, int) > > map = {
{ "+" , [] (int a, int b) { return a + b; } },
{ "-" , [] (int a, int b) { return a - b; } },
{ "*" , [] (int a, int b) { return a * b; } },
{ "/" , [] (int a, int b) { return a / b; } }
};
map[s](op2, op1);
做了四道北理的上机真题吧,有的描述不太清楚,但是我比较喜欢的方式分享一下
//用来处理,用一些分割符的,java的split多好啊
stringstream ss(path);
string tmp;
while(getline(ss,tmp,'/')) {
//这个会直到末尾遇到eof,tmp是坚决不读'/'的如果一上来就'/'就读'';
}
//结构体,类,自定义排序,这里其实是pair,不过差不多啦
sort(pr.begin(), pr.end(),
[](const auto& L, const auto& R) {
if(L.first != R.first)
return L.second > R.second;
else{
return L.first > L.first;
}
});
专业课部分
信息学部分:
- 虽然不知道有没有用吧,但也学着,发现一个很好的靶机平台vulnhub,直接上vmware是可以的,跟着博客做完了一个ctf0还学习了一下中国蚁剑,很好用比菜刀高级多了,就是安装的时候它有个Loader和核心源码,初始化的时候,把那个文件夹指向那个核心源码就好了。
- 复习了一下,文件上传的图片木马如何连蚁剑,今天那题,bp抓包改文件名这种菜鸡方法是不可以的,这种情况只能文件包含配着文件上传一起用,但是今天那题特骚,提示中文件名还特么加了随机数然后算了个哈希,我…而且它上传的路径我找不到,学习到可以用bp来爆破,但其实还是凭着经验找一点一点式路径,再学学看看有木有好的方法吧。
计算机网络部分:
- 今天看了小林的那个HTTP3,推荐一下小林coding的,他的公众号真不错,今天是QUIC,谷歌提出的,感觉挺有前途的,现在5G自媒体,大流量大家还是对快要求很高,从林哥那里总结一下QUIC协议的特点吧,无队头阻塞多个Stream之间没有影响,一个堵塞了,不影响其他的;建立连接速度很快,1个RTT就同时完成建立链接与TLS秘钥协商;连接迁移,这个比较NB,不是四元组来绑定,而是连接ID来记录通信,网络变化后,IP变了,通过ID可以来标识自己,只要上下文还在,那么久可以连上,消除重连的成本
密码学部分:
- 说起密码学吧,每次学一上午的密码学我就很难受,数学问道太浓郁了,总是走神写小说,尤其是对密码算法的推导,后面我决定还是实现算法,直接背吧。就复习一下,初试没写出来,现在挂在墙上的RSA小可爱吧
秘钥生成部分:
选择不相等的p,q; n = p * q; φ \varphi φ(n) = (p - 1)(q - 1);随机选择e,1 < e < φ \varphi φ(n)且e与 φ \varphi φ(n)互素
公钥为(n, e),利用公钥来算一个私钥,ed - k φ \varphi φ(n) = 1这个二元一次方程组中选一组(d, k),则(n, d)为私钥
操作系统部分:
- 面试突击那些总结一下:
- 常用的Linux命令行小工具:不要发杵vim,这个一定要会
- 进程操作:查看当前哪些进程在rung的ps, top,问了N遍
- 文件操作:mv 老名字,新名字(mv原来可以改名用;
- 网络部分:ifconfig看IP,netstat看开放的端口
- 常用的Linux命令行小工具:不要发杵vim,这个一定要会
小项目部分
- 把原来那个Java的购买项目的用户登录部分,加了下放sql注入,更新了一下github,好吧就是把Statement变成PreparedStatement,Java对单引号进行转译而已(^_−)☆
- 虽然不知道算不算项目,但是我开始手动实现密码学算法,利用C++,今天就那个小RSA吧,明天上代码,反正向github上放一放,在简历里凑个数,其实这个很难哩
dream tutor的论文
老师很热情的给了,能量分析攻击,是我挺喜欢的领域的,第一次看老师展示觉得很神奇就居然不用数学就可以破译密码有点cool,论文全是英文加实验过程,不过挺好的,至少不是毕设老师那样让自己找,只看了一点点,明天大量,今天先来个引子
能量分析攻击的主要思想是:通过分析密码设备的能量消耗获得其秘钥。本质上,这种攻击利用了两类能量消耗的依赖性:数据依赖性和操作依赖性
今天是一个好的开始,抛弃那些,开始认真的写博客分享学习,就认真的试一把复试,老师那么好,真的他怎么那么好,好像当他的学生,努力加油吧,用复试来弥补一下初试,不要丧了,加油宝贝!!!!