自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 主机系统安全之SSH防御的c语言实现

脆弱的服务器 相信好多coder们都喜欢租用一些云主机来进行建站、存储资源或者实践,而大多数人租用了之后应该都会选择系统裸奔。 我手里正好也有一台云主机,偶尔登录消遣一下。某天机缘巧合,登录系统查看了一下登录认证日志文件/var/log/secure,令人惊恐的事情出现了: 我在文件中发现了大量的“authentication failure......rhost=......”,原来我们的云主机一直处于危险之中而不自知,每时每刻都会有一些非法的人在对我们的主机进行扫描、爆破等...

2021-11-22 23:06:15 3546

原创 SM4分组加密算法原理和c语言实现

一、前言 在之前的文章中介绍了《SM3国密杂凑值算法的原理和c语言实现》,这篇文章主要是用c语言撸一个SM4分组加密算法。 随着信息安全的普及以及等级保护等安全政策落地,国密算法越来越频繁的出现在项目开发中,在较新的一些openssl版本中已经有了SM2、SM3、SM4等国密接口,还有Gmssl等开源加密库也均对国密算法进行了支持。 不过在一些底层的开发中,尤其涉及到内核驱动层开发、TCM等密码卡开发,现有的一些加密库由于过多的依赖,是无法直接使用的,这时候恐怕就得要求开发人员......

2021-11-05 18:43:46 16285 10

原创 SM3国密杂凑值算法的原理和c语言实现

一、SM3算法介绍 杂凑值算法也可称为摘要算法或者哈希算法。通过对数据资料的填充、分组、扩展压缩等方式计算成特定长度的数值,来作为数据指纹或者数据特征使用。常见的MD5算法长度为128bit(16字节),SHA1算法计算长度为160bit(20字节),SHA256算法计算长度256bit(32字节),SHA512算法计算长度512bit(64字节),SM3算法计算长度为256bit(32字节)。 SM3密码杂凑值算法是国家密码局公布的自研算法,参见国家密码局2010年12月《SM3密码杂...

2021-11-03 19:37:12 14020 4

原创 IO端口复用之epoll的底层实现

介绍 解说中存在一些函数和数据结构,具体出处可以参照上一篇关于select的分析 《IO端口复用之select的底层实现》,里面提及了一些储备知识点,本篇不再赘述。 由于tcp过于复杂,取个巧,全篇以udp连接来说明一下,内核版本依旧对应2.6.32。本篇在加上之前的《IO端口复用之poll的底层实现》,算是集齐了linux系统常用的端口复用技术三贱客。 从上述两篇可以看出,select和poll在底层轮训技术上没有本质的区别,而epoll则有了很大的改进,使用了事件触发机制。...

2021-07-19 19:55:20 450 1

原创 IO端口复用之poll的底层实现

介绍 poll前部分的内容是从select底层实现篇拷贝过来的,可直接跳转到poll内核实现部分进行阅读。 由于tcp过于复杂,取个巧,全篇以udp连接来说明一下,内核版本对应2.6.32。 poll说到底是和网络套接字打交到的,从网络套接字创建的过程(socket和bind系统调用),来了解一下socket、sock、inet_sock等数据结构之间的联系,以及创建一个监听套接字之后到底发生了哪些变化。储备知识点 此处是一些琐碎的知识点,以便更好的理解poll系统...

2021-03-20 17:00:39 556

原创 IO端口复用之select的底层实现

不同的文件描述符file中的文件操作结构ops其实指向的是不同的函数,从网络通信套接字来说,tcp协议SOCK_STREAM创建的套接字的ops是inet_stream_ops结构,而udp协议SOCK_DGRAM创建的套接字的ops使用的是 inet_dgram_ops,原始套接字SOCK_RAW创建的套接字的ops使用的是inet_sockraw_ops。 可以从socket系统调用,通过关注struct socket *sock的赋值来进行追溯,此处不做描述。...

2021-03-19 20:19:43 699

原创 linux内核hook技术之函数地址替换

前言 函数地址替换是一种更为简单、常见的hook方式,比如对security_ops、sys_call_table等结构中的函数进行替换,来完成自己的安全权限控制。 其中security_ops是LSM框架中所使用的,sys_call_table是系统调用表结构。当然了,这些结构目前在内核中都已经是只读数据结构了,如果想直接进行函数替换的话,首先就是考虑解决关闭写保护的问题。在下面的模块例子中,演示了重置cr0寄存器写保护位及其 修改内存页表项属性值两种关闭写保护方式,有兴趣的朋友可对...

2021-03-04 18:15:53 1816 3

原创 linux内核hook技术之跳转指令偏移值

前言 在另一篇博文中提到了指令覆盖和指令注入的hook方式,使用覆盖和注入方式完成内核函数hook,需要有很多的注意事项,而且容易被检测工具检测。这篇博文则聊一下如何通过替换跳转指令偏移值来完成内核函数的hook,这种hook技术也可以称为inline hook。 事先做个准备工作,手头正好有centos 6系列操作系统,还有一个热腾腾刚出锅的vmlinux。通过 gdb vmlinux,所示如下: 如图片所示,sys_open通过call指令调用了do_sys_open...

2021-03-02 19:51:07 753 3

原创 linux内核hook技术之指令覆盖与注入

前言 说到hook,传统意义上,大家都会觉得跟注入和劫持挂钩。在linux内核中,也可以通过指令覆盖和注入的方式进行hook,来完成自己的业务逻辑,实现自己的功能需求。 一部分人喜欢称这种hook技术为inline hook。如何hook 具体hook细节在以下编写的驱动例子程序中给出了,例子中标注了详细的注释,大家可对照着代码查看。 例子程序在centos 6系统上编译并测试通过了,如果换成其他系统,部分代码可能需要进行微调,想要尝试的朋友,自己写个简单的mak...

2021-03-02 15:16:58 1433 2

原创 动手写汇编——函数调用过程的思考

c代码在linux系统上,动手写一个demo.c小程序#include <stdio.h>int func0(int a, int b){ int t; t = a + b; return t;}int main(void){ int t; t = func0(10, 20); printf("%d\n", t); return 0;}该程序在func0函数中做了加法运算,并通过printf系统调用打印了出来。

2021-02-27 18:51:43 507 1

原创 centos6系统编译grub-0.97

问题一:编译报错centos5.X和centos.X系列的系统默认使用的是grub legacy(grub-0.97)版本的引导程序,有定制化需求的就需要对grub进行编译。尝试在centos6.5系统上进行编译:./configure 之后报错:configure: error: GRUB requires a working absolute objcopy; upgrade your binutils1、网上参考其他大佬的方案,是由于gcc版本的问题导致的,使用gcc3.5版本即可。6

2022-03-30 15:56:15 4156

原创 c代码中如何捕获空指针异常—try/catch的简单实现

现象 经常写c的朋友总会遇到"Segmentation fault (core dumped)",更多的时候可能是由于所操作地址不合法导致的。 大家对于空指针异常错误都非常熟悉,一般就是由于操作的地址不合法,被系统程序的SIGSEGV信号干掉了。手头正好有一个centos 64位的系统,顺手可以做个简单测试:#include <stdio.h>int main(void){ char *p = 0; *p = 0; return 0;...

2021-12-16 20:32:10 3270 1

原创 GRUB引导程序之承前启后的start.S—源码分析

启动阶段 在查看了start.S代码之后,就会对GRUB Legacy启动阶段有了更清晰的认识。在传统的GRUB启动中,一般分为stage1、stage1.5和stage2三个阶段,当然,stage1.5是可以忽略的,这样就直接从stage1跳转到了stage2。stage1.5主要是为stage2构建其所需要的文件系统。 目前只考虑GRUB legacy,不考虑GRUB 2.0的情况。像redhat/centos 5/6系列的系统一般使用的都是GRUB legacy代码,redhat/...

2021-11-26 16:35:00 2609

原创 GRUB引导程序之第一阶段stage1.S分析

初识BIOS BIOS是最基础的输入、输出系统,是固化在计算机主板上ROM芯片中的程序,可以这么理解,当计算机主板加电之后,CPU先加电,然后加载到CPU中运行的第一个计算机程序就是BIOS。 BIOS会执行POST(Power-on Self Test)硬件自检功能,自检完成之后,就会检索启动设备,并将启动设备的第一个柱面,第一个磁道的第一个扇区,共计512字节的内容读取到物理地址0x7c00处。 被读取的512字节就是MBR,在GRUB引导程序中,就是stage1,对应了一段汇编代...

2021-11-25 16:51:00 2758

原创 可信计算中的身份鉴别和证明-EK、AIK和DAA

可信计算可信计算的概念由来已久,此处罗列几个时间点!信息安全标准的演变:1985年美国国家安全局提出TCSEC标准,又被称为橘皮书,里面第一次提到了TCB(可信基)的概念。 1987年,NSA又提出了用于可信网络连接方面的TNI标准,被称为红皮书,至此彩虹系列的安全标准应运而生。 1991年欧洲四国(英、法、德、荷兰)联合提出ITSEC标准。 1993年,美国提出本国的FC标准。同年加拿大提出自己的CTCPEC标准。 1996年,欧洲四国和美、加进行六国会议,共同提出CC标准1.0版。

2021-10-28 19:53:50 4346

原创 linux忘记root密码怎么办——重置root密码的四种方法

linux忘记root密码之后,可以通过修改bootloader启动项的参数,进入系统,重新通过passwd指令修改root 密码。 下面介绍了常用的四种方法,在不同的场景可以选择不同的方法进行root密码重置。老版的grub legacy单用户进入重置密码 以为centos系统为例,手头常用的系统有rhel/centos 5、6系列都是使用的grub legacy。这类系统启动的时候,进入bootloader菜单页,随机选择内核按e进入编辑页 选择kernel...

2021-09-17 19:35:09 48741 1

原创 linux系统上如何用c代码快速完成目录遍历

使用c代码完成目录遍历一般常用的方式有两种,一种是递归方式,另一个是链表方式。 可供使用的api就是opendir、readdir等。其实在glibc中有一种api封装了opendir、readdir等函数,而且是通过链表的方式实现的目录遍历,就是fts_open、fts_read、fts_close等函数。 其遍历的速度比自己封装实现的还快一些。最、最、最主要的是代码够少,demo code如下:#include <stdio.h>#include <...

2021-09-15 17:22:02 958

原创 yum安装指定版本内核及软件

以常用的centos为例,当配置了一个yum源之后,yum install kernel或者yum update kernel的时候一般会安装当前源里面,对应系统版本中最新的rpm包,一般都是带小号的最大值。 比如在centos7.9系统中,默认内核号是3.10.0-1160.el7.x86_64,内核号是不带最后的小版本的。我们如果配置了阿里源,具体配置方式参照mirrors.aliyun.com网站中的介绍。以下是阿里云centos7.9 yum源中的rpm包截图: ...

2021-09-10 16:24:59 9045

原创 windows上使用qemu安装arm架构的linux

需要安装一下aarch64架构的麒麟系统,手头暂时没有arm架构的设备,只能使用qemu模拟一个。下面简单记录一下安装的的一些过程。 1、安装qemu软件 可以去qemu官网找一个64位的exe程序安装一下。 2、aarch64体系系统需要的efi引导文件 可以访问https://packages.ubuntu.com/bionic/qemu-efi-aarch64,下载下来的一个ubuntu系统使用的deb包,可以通过压缩软件解压,也可以找一台ubunt...

2021-08-30 18:31:55 6678 2

原创 简单的将linux二进制程序、资源打包成rpm

需求 之前发布、实施软件或者产品的时候,更多的是以脚本+tar压缩包的形式,或者直接集成一个ELF程序来进行发布。 现在想简单的把可执行程序、依赖动态度和资源打到一个rpm包中,通过rpm -ivh方式进行安装。过程 该打包过程只是记录了一下将二进制放入rpm中的过程和注意事项,不涉及预编译、编译和安装等繁琐的过程。 1、程序准备 虚拟机上得有rpmbuild程序,没有的话yum或者apt-get安装一下,例如yum -y install rpmbuil...

2021-08-25 16:15:51 2021

原创 linux内存管理之石器篇

前言 该篇为linux内核内存管理第一篇,答主文中所述主要作学习记录使用,文章中难免有逻辑错误、思虑不周之处。欢迎路过的各位牛牛们告知并督促答主改正,不吝赐教。初见内存 在冯诺依曼体系结构中,存储器是5大部件之一。试想一下,我们编写了一个打印hello world的程序,如何才能让程序执行起来。 程序执行需要借助cpu,也就是5大部件中的控制器和运算器,而程序运行过程的本质就是“CPU取指”,然后执行。在取指中,指令从何处来? 其实,指令就存储在内存中的。程序执行...

2021-06-28 13:10:47 463

原创 pikachu靶场练习记录

本篇针对pikachu靶场中的越权、目录遍历、敏感信息泄漏、SSRF、PHP反序列化、XXE和url任意跳转等题目进行了记录。

2021-06-07 16:46:53 291 3

原创 pikachu靶场记录之暴力破解-包括带token的密码猜解

1、基于表单的暴力破解2、验证码绕过3、

2021-06-02 12:24:11 701 1

原创 靶场练习之hackinglab(鹰眼)-脚本题

1、寻找key 访问给出的链接:http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php,进入页面,有提示语在这里找到key,也是一个访问链接:http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/search_key.php,访问新链接之后进入一个页面提示此处没有key,我们可以看到浏览器上面的uri已经不是search_key.php页,说..

2021-05-31 18:54:15 502 6

原创 如何利用burpsuite的intruder和Macro进行带验证码的密码爆破

说明 burpsuite是做攻防渗透的一个常用工具,可以用来拦截http请求做修改、重放、替换、爆破、扫描等各种操作。在hackinglab上做某道练习题的时候,使用了burpsuite的intruder与MACRO等功能,现在针对题解做个记录。准备工作 首先访问该题目的网址:http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php,该练习站点需要登陆才可以使用,图方便可直接使用qq账号登陆。...

2021-05-28 21:11:46 2417 6

原创 靶场练习之hackinglab(鹰眼)-解密题

1、以管理员身份登录系统 根据题目的提醒,只要将admin用户进行重置密码即可。访问:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php,进入登录页面,登陆页面有重新设置密码链接:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/resetpassword.php。访问该链接进入重设密码页面,输入test(普通用户..

2021-05-25 17:04:00 914

原创 靶场练习之hackinglab(鹰眼)- 上传题

1、上传jpg图片文件 题目提醒上传jpg格式的图片文件,访问链接http://lab1.xseclab.com/upload1_a4daf6890f1166fd88f386f098b182af/,查看网页后台发现前台上传时会进行后缀名验证,现选择一个文本文件,将后缀名修改为jpg,然后进行上传。 上传之后页面跳转到http://lab1.xseclab.com/upload1_a4daf6890f1166fd88f386f098b182af/upload_file.php,刷新当前页面...

2021-05-17 18:11:25 184

原创 靶场练习之hackinglab(鹰眼)-基础题

说明鹰眼系统的地址是:http://hackinglab.cn/index.php,需要注册然后进行练习。本篇先进行基础题的练习记录1、寻找key在哪里 第一题中,点击过关地址,访问之后是一个接近空白的页面。key的位置肯定是隐藏在页面中,于是祭出burpsuite抓个包看一下。在返回的html页面中,key果然被隐藏了<!--key is jflsjklejflkdsjfklds-->,现在输入jflsjklejflkdsjfklds提交。2、再加密一次就可以得到key...

2021-05-15 18:59:31 1366

原创 靶场笔记之dvwa训练场石器篇

说明 可以在windows上下载一个phpstudy来搭建dvwa环境,之前有专门针对sql注入的练习,本篇不再做sql注入的练习记录,先针对指令注入、CSRF、文件包含、文件上传、XSS等进行练习。 如果选择windows部署环境,页面可能会有乱码,需要修改一下PHP文件编码。找到dvwaPage.inc.php页面,在Header部分,将Header中的utf-8修改为gb2312即可。指令注入简单 先查看一下指令注入简单模式下的代码php将输入的参数直接...

2021-05-12 16:33:45 235 8

原创 靶场笔记之sql注入石器篇2

介绍 还是https://redtiger.labs.overthewire.org/网站的训练项目,上面有关于sql注入的练习。 本篇接上一篇《靶场笔记之sql注入石器篇1》,从level 6题目开始介绍,同样只记录实操过程,关于sql注入的相关知识点不做赘述。level 6 进入网址https://redtiger.labs.overthewire.org/level6.php,发现页面出现了Click me入口点,点击click me之后,发现uri添加了?user...

2021-04-26 13:56:26 386 1

原创 靶场笔记之sql注入石器篇1

前言 偶然发现了https://redtiger.labs.overthewire.org/网站,上面有关于sql注入的练习,分level1到level10,可依次进行练习。 本篇先介绍level1至level5的题目,可动手操作起来。level 1 点击level 1进入https://redtiger.labs.overthewire.org/level1.php页,尝试了username和passwd没有发现任何问题,后来发现网站上有个Category:1的可...

2021-04-22 01:01:55 489 2

原创 linux安全之seccomp

介绍 seccomp按照字面意思可以理解为security computing,最早是作用于网格计算,主要通过限制进程的系统调用来完成部分沙箱隔离功能。 通过man prctl可以发现,seccomp的引入是在内核2.6.23,早期的seccomp主要限制read、write、exit以及sigreturn四个系统调用。内核3.5版本引入filter模式,将seccomp分成strict和filter两种。其中strict依旧限制四种系统调用,而filter模式则借助了Berkeley ...

2021-04-15 16:53:21 4073 2

原创 linux安全之设置位

在使用linux或做开发的过程中,经常会用到set-user-ID、set-group-ID以及sticky bit等设置位,细纠起来这些设置位或多或少都与安全有点关系。SETUID SETUID就是所谓的set-user-ID bit,一般我们对这个设置位比较熟悉是因为它可以帮助提权。 使用命令 find / -perm -u=s 可以看到诸如ping、unix_chpwd、usernetctl、sudo、crontab、passwd、newgrp等程序,由于能力机制限制,...

2021-04-13 15:27:35 180

原创 小白眼中的可信计算-石器篇

菜鸟语录 掘金平台的处女篇,文章中有不当之处,还望嘴上轻喷,手下留情。工作中偶然学习到可信计算的一些东西,觉得有趣,萌生了做笔记的念头,接下来让我们从工程研发的角度来了解一下可信计算吧。可信?what's that? 聊可信计算之前先想象一下什么是可信与信任,我相信掘金平台,于是注册账号写下了这篇文章,这个过程,掘金平台对于我和我们而言就是可以信任的。 如果现在有一个未知的博客网站让我们注册、翻阅和分享,我们还会不会这么坦然的吹水,我们就会有无限的遐想,手机号会不会泄漏...

2021-02-27 19:27:37 175

原创 一个简单的linux驱动模块

如何编写一个简单的驱动模块,我们这里可以使用vim编辑一个hello_world.c文件。#include <linux/module.h>//模块装载时初始化函数static int __init hello_init(void){ printk("this is a hello world module\n"); return 0;}//模块卸载时清理函数static void __exit hello_exit(void){ return;}

2021-02-26 19:52:57 187

原创 linux内核模块装载问题

问题做好了linux内核模块,装载的时候经常遇到 “could not insert module *.ko: Invalid module format”情况,此时通过dmesg查看会报错误信息,“disagrees about version of symbol module_layout”

2021-02-26 19:19:13 583

原创 红帽&麒麟 v7.*系列系统升级内核3.10.0的问题记录

现象 红帽、centos以及中标麒麟v7系列系统的内核版本基本都是3.10.0-*,因业务需要将某v7系列系统的内核升级成3.10.0版本。前后内核版本基本一致,感觉应该是没什么问题的,官网下载3.10内核源码,按照编译流程进行编译、安装,一切顺利。 重启系统后,在grub启动引导阶段,选择新安装内核版本3.10启动,均启动失败。 先后在vmware虚拟机和物理机中试了centos系统和麒麟系统,各自会报不同的错误“A start job is running for dev-...

2021-02-19 16:59:29 1706

原创 用python爬个小说

上下班,地铁间,用手机在各类小说网站看小说时,总会有莫名其妙的弹窗,是不是很烦恼。其实我们可以借助python写个小工具,将想看的小说爬下来。友情提醒:记得仔细看一下17年6月公布的网络安全法,个人隐私信息、版权信息、robots.txt协议等限定的信息不可以随便抓取哦。我们可以通过bp(浏览器F12也可以,不过不如bp直观)看一下输入目录页的url之后会看到什么信息该结果是一个json格式,其中字段chapterName代表章节名称,chapterId代表章节的id号,该id号...

2021-01-18 18:47:00 281

原创 sqlite数据库并发问题

目录描述sqlite的锁死锁现象解决方法描述做过一些qt工程项目,单机版软件中经常性的会使用sqlite数据库,优缺点都很明显。优点:轻量级,容易跨平台移植,操作简单,尤其针对linux这种种类繁杂的系统,适配起来相对简单,而且一些系统已经内置了sqlite动态库。缺点:既然是轻量级,那功能和性能上就有点跟不上了,尤其是多线程操作时的并发问题。sqlite的锁用过sqlite的小伙伴都知道,sqlite使用的是库锁,当然也可以理解成“文件锁”。sqlite...

2021-01-08 14:50:22 3176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除