自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP1P CTF 2023 Writeup

最近实在太忙,抽两小时打了一下,避免遗忘一些技能。

2023-10-16 10:56:01 289

原创 <Operating System Concepts> 第九版 第一章习题答案(原创)

计算机系统习题分析

2022-07-12 22:56:27 1628 1

原创 欧几里得算法详解

欧几里得算法的目的是简单的求出两个正整数的最大公因子。基本定义:两个整数是互素的,当且仅当它们只有一个正整数因子1。对于两个整数a、b。由于两个正整数存在 gcd(|a|,|b|)=gcd(a,b),所以我们可以假设a>=b>0。因此可以写出关系式: a=q1+r1, 0<=r1<b首先当r1=0的时候,d=gcd(a,b)=b。这是易于理解的。另外当r1!=0的时候,我们是易知d|r1的。这个是好推导的,因为d|a,d|b,所以d|(a-q1b),即d|r1。例如5

2021-03-04 12:27:41 2412 2

原创 Linux 学习笔记与常用命令

在学习过程中对不同板块的linux常见命令做了总结。首先是对于进程查看的常见命令:ipcs: 该命令可帮助查看共享内存、消息队列、信号量等使用情况。ipcs -a命令可以查看当前使用的共享内存、消息队列及信号量所有信息。ipcs -p命令可以得到与共享内存、消息队列相关进程之间的消息。ipcs -l命令可以查看各个资源的系统限制信息,可以看到系统允许的最大信号量集及信号量个数限制、最大的消息队列中消息个数等信息。ipcs -u命令可以查看各个资源的使用总结信息,其中可以看到使用的信号量集的个数、

2021-03-02 11:02:16 128

原创 并发编程思考--多路复用技术

本文默认读者具有Csapp与Os的所有基础知识。首先是并发编程的意义:这是显而易见的,例如在服务器端利用并发编程技术,可以同时为多个客户端提供服务,主程序只需要接收客户端的请求并为其分配子进程(粗浅运用)。这里我们简单略过。接下来我们讨论基于进程的并发编程:就像我们上面举的例子一样,我们完全可以用主程序接收信号,并为每一个特定的事项分配一个子进程去专门处理。这里要注意的是需要包括一个SIGCHLD处理程序,并且处理程序中最好使用:while(waitpid(-1,0,WNOHANG)>0);的

2021-01-07 04:56:43 258

原创 ECF中的信号、并发与跳转详解 (二)

Linux提供阻塞信号的隐式和显式机制。对于隐式机制,内核默认阻塞任何当前处理程序正在处理信号类型的待处理信号。对于显式机制,程序可以通过sigprocmask函数与它的辅助函数,明确地阻塞与解除阻塞选定的信号。#include <signal.h>int sigprocmask(int how,const sigset_t *set,sigset_t *oldset);int sigemptyset(sigset_t *set);int sigfillset(sigset_t *

2021-01-06 22:03:32 157

原创 ECF中的信号、并发与跳转详解

本节开始我们将针对信号展开讨论在之前的学习中,我们已经看到了硬件与软件通过合作来提供基本的异常机制,也看到了操作系统通过利用异常来支持进程的上下文切换的异常控制流形式。本节我们将讨论一种软件形式的高层异常,即linux 信号。每个信号其实都可以理解为一条消息,用于通知进程系统中发生了什么事。底层的硬件异常是由内核异常处理程序去处理的,正常情况下这种处理对于用户进程来讲是不可见的。但信号会直接通知用户进程发生了某些异常。如进程试图除以零,内核将发送给它一个SIGFPE信号;如果执行非法指令,将收到SI

2021-01-01 20:52:05 295

原创 [MRCTF2020]Ezpop --对pop链构造的简单理解

  简单的序列化攻击是因为对魔术方法的自动调用而触发漏洞,但如果关键代码不在魔术方法,而是在一个类的普通方法中,则需要观察联系类与函数之间的关系,将其与魔术方法的利用结合起来,这时候就可以利用pop链的构造与攻击。首先题目界面直接给出了源码:Welcome to index.php<?php//flag is in flag.php//WTF IS THIS?//Learn From https://ctf.ieki.xyz/library/php.html#%E5%

2020-12-31 00:17:56 3132 2

原创 ECF 计算机系统异常控制流详解 (一)

首先讨论本地跳转与非本地跳转本地跳转:以C语言为例,从某个函数通过goto跳转函数跳转到另一个函数执行,叫做本地跳转。非本地跳转:例如使用setjmp()与longjmp()函数进行异常控制,保存当前函数状态并跳转到另一进行函数的过程,叫做非本地跳转。非本地跳转是C语言中处理异常时更为优美的方式。然后我们来理解一下异常异常实际上就是异常控制流的一部分,由计算机硬件与计算机系统共同负责完成。即控制流中的突变,用来响应处理器状态的某些变化。控制流我们该怎么理解呢?程序计数器负责存储下一个指令的地址

2020-12-30 08:28:38 962

原创 [BJDCTF 2nd]简单注入---关于整数型注入的一些理解

本次以BJDCTF的题目,简单对整数型注入做一些讲解。首先进入界面:看到的是比较友善的登录界面,考虑题目名称为简单注入,我们直接在密码栏输入 ',发现被过滤。因此开始考虑整数型注入。既然闭合了引号防止闭合,这里我们可以猜测后端代码,结合用户名输入进行注入。在用户名中输入\,可以过滤掉用户名处的最后一个',这是password='这部分的第一个引号将会作为前面字符段的闭合,就可以构造整数型注入。我们构建第一个payload:username=apassword=1 or length(da

2020-12-30 06:15:31 313

原创 [BJDCTF2020]EasySearch Writeup

今年BJD CTF的原题,主要考察Apache SSI远程命令执行漏洞进入题目后是这样我们扫描目录可以发现swp源码泄露审计源码:逻辑非常简单,扫一眼就能看完。实际上我们对于username是完全可控的,password用于绕过登陆,只要让hash值得前6位于源码中的值相等就行,此处可以直接爆破。爆破过程非常简单,就不多说了。我们选取一个很吉利的密码:2020666然后我们成功登陆:查看返回包:访问这个url:可以看到回显了用户名这里我们可以根据SSI注入直接构建payload

2020-12-29 22:19:49 234

原创 [NCTF2019]True XML cookbook Writeup

结合本题简要讲解一下xxe攻击本篇文章默认读者了解Xml基本格式首先我们看到一个登录界面,使用burp抓包看一下:这里暴露出来很明显的xxe注入点。我们开始构造payload:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hacker[<!ENTITY a SYSTEM "file:///etc/passwd"> ]><user><username>&a;</us

2020-12-29 21:49:47 457 1

原创 [安洵杯 2019]easy_serialize_php---关于php反序列化的一些思考

这道题值得拿出来说一下,是因为涉及到了反序列化逃逸的一些基本知识首先有几个点值得去思考一下,我们知道一般序列化的格式是:{i:5;s:9:"aaaaaaaaa";}上面的序列化格式其实表示的是一个整数变量值为100与一个String值为"aaaaaaaaa"。如果我们在序列化好的字符串中加入 ;} 字符就能在中间起到反序列化时的截断效果。同时如果前面的字符数、类型等正常对应,反序列化时是能正常解析并起到覆盖变量的效果的,这就叫做php反序列化的字符逃逸。我们构建payload只需要保证这一点就行

2020-12-21 20:51:01 231 1

原创 [WesternCTF2018]shrine--一道颇有渊源的题目讲解

这道题其实出题时候的想法是代码审计+SSTI,属于非常简单的题目首先主界面直接给了源码(不搞假惺惺.git/.swp/www.zip那一套)审计其实只要直接审计Flag就好了, 我们可以看到用了app.config去存。但同样在黑名单里面ban了config与self。这里我们可以采用url_for去初始化current_app,从而读取config内容。所以直接payload:{{url_for.__globals__['current_app'].config}}搞定。...

2020-12-20 22:34:22 145

原创 [BJDCTF 2nd]fake google Writeup(SSTI攻击原理分析)

利用本题,我们开始讲解简单的SSTI知识。首先进入题目界面,发现是一个大大的google搜索界面(仿制)在搜索栏随意输入后,发现跳转到qaq,并以get方式传入了一个name的变量。然后我们开始修改name变量的值。不要因为我说要讲框架注入咱们就直接上SSTI的payload。。。正常测试找攻击点咱们也该试试1’ 之类的sql注入。。。然后我们发现输入SSTI的表达式构造会出现回显:?name={{2*2}}这里附一张各类框架的结构图(网图):漏洞形成的原因其实与sql等大同小异

2020-12-03 19:24:57 298 1

原创 [极客大挑战 2019]LoveSQL Writeup(超级详细)

今天再讲一道sql的题,同样比较基础,但是相较于前面某道 1’ or 1=1#或者 1’ or ‘1’='1的题来讲要稍好一些。首先我们玩一玩老套路,绕过登录进去看一看,发现回显:这行数字,直观看上去像是16进制,转换一下得到:直观看上去没有什么用我们试一试常规的注入手段。payload:union select出现报错回显:说明应该没啥过滤,老老实实爆数据库名-表名-字段就行了。payload:1' union select * from a#报错回显是:所以这里相当于直接告诉

2020-11-27 16:57:45 1689 2

原创 [SUCTF 2019]EasySQL 1 Writeup(超级详细)

本文章是该系列的第三篇,同样涉及到基础sql注入原理。首先我们能看到的就是一个输入框,直接告诉了你注入点。做了一些简单的测试,直接过滤了from、union、extractvalue、PREPARE等关键字,回显提示:NONONO!前面的那道sql我还是讲的比较中规中矩,这道sql骚一点。先讲讲我的第一种玩法:首先手工盲注嘛,会发现连sleep等都全部过滤掉了,而且你输入数字的时候回显是:Array ( [0] => 1 )输入字符的时候啥也不回显。有经验的师傅这个时候其实就懂得要放

2020-11-26 21:10:19 9631 4

原创 《深入理解计算机系统原理》学习笔记与习题答案(二)

这篇文章是《深入理解计算机系统原理》的第二部分,主要讲解第二章2.2节 整数表示。2.2 整数表示本节主要介绍了两种方式,分别在计算机中表示非负数与所有整数。(友情提示:看书时可先略过图2.8)2.2.1 整型数据类型这一节给出了两张图,我们可以从中得到两个重要特性:1、正数与负数的表示范围不是对称的,负数范围的绝对值比正数大1。这是因为0的表示算在了正数里。2、int默认可以用2个bytes表示,这与16位机器相同。int_32t是4bytes,int_64t是8bytes,但实际上int在

2020-11-25 17:41:36 1169

原创 《深入理解计算机系统原理》学习笔记与习题答案(一)

第一章计算机系统漫游比较基础广泛,后面有空补上。第二章 信息的表示和处理首先需要理解计算机当中的位的概念。位:在二进制数系统中,位记为b,即比特,是最小的存储单位。0/1中每一位是1 bit 。本章中研究三种最重要的数字表示形式:无符号编码(unsigned)补码(two’s-complement)浮点数(floating-point)先有个粗略印象:无符号编码实际上就是传统的进制转换表示方式,由于只表示正数,正常转换十进制数到二进制数就是无符号编码;补码用于表示有符号数(如负数),而

2020-11-25 00:25:41 2708

原创 pwn学习入门教程(一)

写这个系列的文章是因为想系统回顾之前学过的ctf知识,也希望引领更多人入门。1. 对pwn的理解pwn是ctf的一种题型,主要是利用程序中的漏洞造成内存破坏以获取远程计算机的shell,从而获得flag。对面服务器运行的更多是C/C++语言编写的程序,而我们通过网络与服务器进行数据交互,我们可以构造恶意数据发送给服务器,导致服务器执行恶意代码,从而远程控制服务器。个人感觉逆向工程是pwn的基础,两者极其类似。学习pwn的门槛比web高很多,所以更需要长期的钻研与学习。2、pwn入门学习的几点建议首

2020-11-24 04:55:49 2812 1

原创 [强网杯 2019]随便注 Writeup(超级详细)

这道题应该算是非常熟悉、经典且基础的一道题目,在攻防世界、Buu等平台上非常常见,适合作为sql注入的入门学习题目。作者说了一句:开发和安全缺一不可。这也是我想说的。废话不多说,步入正题。首先进入界面我们可以看到一个输入框,结合题目信息我们可以判断这就是注入点。我们先输入:1’尝试一下。果然出现了回显报错:error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your

2020-11-23 14:43:45 1049 1

原创 [HCTF 2018]WarmUp WriteUp(超级详细)

从今天开始更新一些网络安全的基础文章与知识,希望能够从中复习与进步。WarmUp 这道题主要考察PhP代码审计。<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"];

2020-11-21 18:12:06 2160 4

原创 算法导论(原书第三版)答案与学习笔记(一)

第一章 算法在计算中的作用本章主要介绍了算法的概念、算法的用途、算法的意义等,并做了后续章节的部分概括。算法实际上就是对于外界输入进行处理并给出符合预期输出的计算过程,书上的概念是:“对于任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。”可以把算法理解为转换输入与输出的一个过程。算法可以解决很多生活中的实际问题,包括DNA测序、快速搜索等,应用范围十分广泛。算法解决问题有两个共同特征:存在许多候选解与存在实际运用。数据结构是一种存储和组织数据的方式,各有优劣

2020-11-10 14:08:48 2056

原创 C语言入门教学 For My Girlfriend

第一个C程序#include <stdio.h>int main(int argc, char** argv) { printf("Hello World\n"); return 0;}这个程序的功能是简单的打印出“Hello World”字符串并换行。注意到开头有 #include <stdio.h> 。C语言是通过#include头来导入头文件或工具库的,如果使用#include 'Name’则表示导入当前目录下的头文件,而#include <

2020-10-03 05:18:27 180

空空如也

空空如也

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

TA关注的人

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