- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 cin cout 小细节
当我们需要一个整型输入 ,但是实际输入为其他类型时。#include <iostream>#include <exception>using namespace std;int main(void){ using std::cout; using std::cin; int input; while (1) { cin >> input; cout << "input\n" <
2020-12-14 21:13:34
178
原创 Daily Reading for Android Security -- 安卓文件格式
Jar 包有两个文件META-INF / TEXT ,仅包含代码文件AAR包包含代码和资源APKzip格式,包含AndroidManifest.xml / AXML二进制格式的文件。META-DATA / 签名信息。classes.dex / 可执行代码。res / 资源文件。assets / 使用Asset系统来存放Raw资源,所有资源都在该目录下。resourse.src / 编译好的二进制格式的资源信息。生成流程看Android软件安全权威指南。dex文件结构dex_h
2020-10-13 13:08:34
199
原创 Daily Reading for Android Security -- Dalvik 基础
执行方式JITDalvik 汇编设计准则基于寄存器的设计,创建后有固定的栈帧(空间取决于方法使用的寄存器数目)整数于浮点数按位计算。寄存器容纳引用类型。不同数据类型,按位计算N个寄存器表示N个参数,实例方法第一个参数表示This指针。指令格式位描述 + 指令格式标志Dex汇编工具duxDump 和bakSmaliDalvik寄存器Dalvik 寄存器全是32位,用相邻里那个register模拟x64,支持最多2^16-1个寄存器,Dalvik虚拟机的每个进程同样维护个调用栈。
2020-10-02 16:31:31
163
原创 Daily Reading for Android Security -- dalvik JVM
dalvik 和jvm的差异DalvikJvm字节码Dalvik字节码java字节码体积较小虚拟机架构寄存器架构栈架构
2020-09-29 10:15:25
110
原创 C++ 学习笔记
文章目录std::threadstd::lock_guardstd::thread线程有两个状态joinable 和detached:joinable 表示线程处于活动状态detached 表示线程独立运行 ,但是程序结束时,同程序退出。实例程序#include<iostream>#include<time.h>#include <thread>#include <unistd.h>#include<sys/time.h>
2020-07-02 15:41:29
153
原创 gradle 语法整理
文章目录dependsOn 依赖关系文件复制dependsOn 依赖关系task taskX { dependsOn ':taskY' doLast { println 'taskX' }}task taskY { doLast { println 'taskY' }}输出结果 先执行taskY 再执行taskXtaskYtaskX文件复制 def srcClassDir = [project.buil
2020-07-02 15:30:55
570
原创 try exception关于异常捕获多重使用
try exception finally 函数内部异常msg = ""def test(): try: raise Exception("文件解压失败") except NameError: pass try: print("test") except Exception: passdef ...
2020-03-06 12:14:04
1072
原创 逆波兰表达式
逆波兰表达式恶补下算法,常用在计算器 , 或者编译原理中的表达式 。原理在原理介绍和相关知识扩展推荐一篇博客 。分析算法给出一个表达式算出正确结果 ,例如 (1+2*(3+4)) , 转为逆波兰表达式1+2*+34 , 我们使用两个栈来辅助运算 , 一个操作数栈(nstack)和一个操作符栈(ostack) , 在上述表达式,从左到右读取数据 , 首先在算术表达式只有三种操作符 ,...
2020-02-09 17:52:29
394
原创 浅谈linux启动一个程序
文章仅代表作者想法, 其中细节希望读者探究 。思考在操作系统中, 一个程序的运行,不用程序用进程来替代可能更好 , 进程的运行并不可能是自发, 必然由另一个进程引发,当执行一个程序的时候,通过系统调用execve来执行程序程序。那程序流的切换操作系统的内核做了什么?kernel装载程序无论是在终端启动或者双击应用运行代码在本质上都是使用do_execve系统调用,通过系统调用进程从用户态转...
2020-02-08 14:41:14
503
原创 pwnable input
文章目录程序源码解题思路step 1step 2step 3step 4step 5exp程序源码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>int main(int...
2019-08-02 16:39:54
223
原创 unlink 发生条件、过程演示 、如何利用
文章目录发生条件:unlink 源码:演示发生条件:unlink是利用glibc malloc 的内存回收机制造成攻击的,核心就在于当两个free的堆块在物理上相邻时,会将他们合并,并将原来free的堆块在原来的链表中解链,加入新的链表中,但这样的合并是有条件的,向前或向后合并。unlink 源码:#define bin_at(m, i) \ (mbinptr) (((char *) ...
2019-07-19 17:29:02
741
原创 三个白帽 - pwnme_k0
ctf wiki题目:三个白帽 - pwnme_k0检查代码保护:可以看出程序主要开启了 NX 保护以及 Full RELRO 保护。这我们就没有办法修改程序的 got 表了。运行代码:猜想代码逻辑,和可能的漏洞。发现存在有格式化漏洞,而且有两个点。用户名和密码, 用IDA直接分析这部分IDA分析:通过覆盖ret地址来执行shellcode, 首先远程服务器默认开启ALRS ...
2019-07-11 01:51:17
1047
原创 sctf-level2
查看程序保护措施查看IDA有system函数但是没有 '/bin/sh’字符串,bss段可写思路利用read 函数将’/bin/sh’写入bss区域 , 再调用system() 函数 。根据IDA偏移量为0x88...
2019-07-10 19:47:52
300
原创 sctf-when_did_you_born
IDA :思路:输入v5 (不等于1926),, 通过v4 覆盖到v5 使其等于1926.可以看出偏移为2from pwn import *#sh = process('./when_did_you_born')sh = remote('111.198.29.45',52538)sh.recv()sh.sendline('1925')payload = 'AAaaaaaa'...
2019-07-09 20:36:33
764
原创 xctf - cgfsb
查看程序保护用IDA 打开查看24行代码可知,通过修改全局变量pwnme = 8 则结束。使用gdb 动态调试。漏洞代码;pwnme 地址,exp:from pwn import *sh = remote('111.198.29.45',36640)sh.recv()sh.sendline('hacker')sh.recv()payload = p32(0x804a...
2019-07-09 20:02:25
1517
4
原创 剑指offer -栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路写程序模拟出栈入栈的过程,以为我们已知入栈和出栈顺序,我们通过出栈来模拟入栈...
2019-06-30 14:48:20
259
原创 剑指offer- 顺时针打印矩阵 精品算法
剑指offer 刷了这么多题但是这一道自己写的算法 ,必须吹爆,题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路把题目给出的矩阵看成一个二维平面, 顺时...
2019-06-29 20:03:09
141
原创 剑指offer - 树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码解题思路 ,两个递归, 第一个递归遍历是查找val相同的节点 ,第二个递归遍历是是否为子结构/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :...
2019-06-27 15:31:14
113
原创 pwnable-passcode
源码 :#include <stdio.h>#include <stdlib.h>void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me t...
2019-06-22 15:33:28
172
原创 剑指offer - 数值的整数次方
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方class Solution {public: double Power(double base, int exponent) { if(exponent == 0) { return 1; }...
2019-06-22 00:02:45
116
原创 二进制中1 的个数
特别记忆 , 大佬算法,class Solution {public: int NumberOf1(int n) { int count = 0 ; while(n != 0) { count ++ ; n = n &(n-1); } ...
2019-06-21 21:45:21
102
原创 pwnable- bof
查看程序源码#include <stdio.h>#include <string.h>#include <stdlib.h>void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xca...
2019-06-20 21:29:33
253
原创 pwnable-[collision]
进入服务器查看代码 ,flag必然没有r权限#include <stdio.h>#include <string.h>unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; fo...
2019-06-20 18:57:16
750
原创 pwnable 1 . fd
通过ssh 链接发现 , 有flag文件但是没有权限看, 查看 fd.c 看fd.c发现程序读取argv[1] 作为文件描述符 , 熟悉unix 环境的知道 fd = 0 , 1 , 2是分别是输入输出和错误, 所以我们输入4660 使得fd = 0 , 在输入LETMEWIN , 拿到flag...
2019-06-18 16:33:25
197
原创 归并排序
代码:#include <iostream>using namespace std;void Merge(int a[], int b[], int start,int end) { if (start == end) { return; } int mid = (start + end) / 2; Merge(a, b, start, mid); Merge(a,...
2019-06-01 12:04:43
114
翻译 PCB进程控制块
https://blog.51cto.com/10740590/1785457(来源博客)struct task_struct { volatile long state; //说明了该进程是否可以执行,还是可中断等信息 unsigned long flags; //Flage 是进程号,在调用fork()时给出 int sigpending; //进程上...
2019-03-07 15:13:24
1085
原创 httpser 踩坑 chroot() 函数
文章目录起因实例起因在写httpser 想要切换目录记得有个函数chroot 于是就用了 , 然后神奇的事情就出现了 , 之后想要输出当前工作目录等一系列的操作都无效,我们来了解其功能。查阅资料 :chroot()用来改变根目录为参数path所指定的目录. 只有超级用户才允许改变根目录, 子进程将继承新的根目录. 调用成功则返回0,失败则返-1, 错误代码存于errno. 错误代码...
2019-03-02 03:35:24
416
原创 RSA加密解密算法
1 引言1.1 任务概要本次课程设计即完成RSA算法签名验证。1.1.1 任务要求(1)产生两个奇数,判断是否是素数。(2)计算得到n=pq的值和φ(n)的值。(3)设定加密用的参数e=17,用辗转相除法求得解密用的参数d。(4)设默认要加密的明文为31631,使用模重复平方法对该明文进行加密和解密。(5)给出辗转相除法求得解密用的参数d的演示过程,如图16演示。(6)界面设计友...
2019-02-27 20:08:09
2706
原创 栈溢出攻击
大神的博客就是强基础知识:https://zhuanlan.zhihu.com/p/25816426知识储备核心目的: 攻击指令的地址来覆盖返回地址修改返回地址, 让其指向溢出数据的一段指令修改返回地址, 让其指向内存中以后的某个函数修改返回地址 , 让其指向内存中以后的指令修改某个被调用的函数地址,让其指向另一个函数“X90” , NOP观察程序运行过程栈的变化...
2019-02-27 13:13:02
515
原创 对于管道的理解和popen()的作用
文章目录代码popen函数##管道unix系统PIC的古老形式,int pipe(int fd[2]) , 完成进程间通信。fd[1] 写 fd[0]读代码// unix 环境高级攻防#include &quot;apue.h&quot;#include &amp;lt;sys/wait.h&amp;gt;#define DEF_PAGER &quot;/bin/more&quot;int
2019-01-09 15:16:00
1356
原创 记录有趣的C语言库 stdarg.h
这个库,主要是用于不限制参数个数,void Prtf(int n , …) 第一个参数是参数个数 (除去第一个参数),使用时,申明一个 va_list vl , va_start(vl , n)初始化vl ,来检索后面的参数 , va_arg(vl , int) 检索下一个,整型参数。va_end (vl,) 结束使用。#include &lt;stdio.h&gt;#include ...
2019-01-05 17:40:59
275
1
原创 寒假无聊 开启小项目 http服务器之二发送http请求(http客户机)
目录说明实验环境建立tcp 连接代码说明通过上一篇博客, 我们基本了解了http服务器的工作流程,首先客户机和服务器建立TCP连接 ,连接建立以后,客户机发出http请求,服务器做出响应。所以我们第一步是通过socket编程编程来建立tcp连接,然后在发送http请求。我们先写http客户机,服务器就使用apache2 服务。实验环境两台 vmware ubuntu x64一台有 apa...
2018-12-18 12:28:06
236
1
原创 寒假无聊 开启小项目 http服务器之一http抓包分析
目录实验环境及工具实验开始tcp 格式分析tcp 三次握手tcp抓包分析http抓包分析实验环境及工具ubuntu 虚拟机wireshark实验开始tcp 格式分析虚拟机使用的是NAT 模式 ,开机后开启apache2 服务, 物理机启动wireshark 并绑定vmnet 8 ,物理机访问虚拟机80端口,呃 , 看到这么多包,头有点大 , 我们先从头开始,首先http协议的传输层...
2018-12-16 16:48:46
271
转载 Ubuntu18.04 编译出现fatal error: bits/libc-header-start.h: No such file or directory
apt-get install gcc-multilib , 环境没有完善
2018-12-07 15:14:53
14542
2
原创 设备、设备控制器与驱动程序
这篇博客来理解 设备、设备控制器、驱动之间的关系:http://blog.sina.com.cn/s/blog_8fc12ee90101de5z.html计算机通过设备控制器来控制设备,独立于处理及完成操作后,发出中断请求,CPU保存环境后,执行终端处理程序,切换断点来数据。...
2018-10-31 16:47:31
4703
原创 银行家算法简析
银行家算法简析银行家算法简析最具有代表性的避免死锁算法所需数据结构可利用资源向量 available最大需求向量 max已分配矩阵向量 allocation需求矩阵向量 need工作向量 work(可提供的资源数目)完成标志 finish算法解析request 是进程Pi的请求向量,表示某进程请求资源数目if request &lt; need ; continue...
2018-10-04 00:19:52
3504
原创 linux 文件权限控制
linux 文件权限控制unix中有七种文件普通文件目录文件快特殊文件字符特殊文件FIFO套接字符号链接权限有R、W、X分别问读、写、执行普通文件读权限获取文件内容,不可修改。读写权限修改文件内容执行权限文件是否可以执行目录读权限可以进入目录、创建文件但是不能获取目录文件。写权限可以进入目录,获取目录文件列表,不能创建、删除文件。执行权限在已...
2018-09-25 16:12:32
112
原创 闲来无事之剪刀石头布
前言:最近闲来无聊,想写写大一的工程实践剪刀石头布,但与之不同的是这次机器人出剪刀石头布并不是随机,而是经过数据统计针对了某特定习惯的出法,理论上提高了机器人的胜率。数据统计1.hotencode 0 代表石头 1 代表剪刀 2 代表布 2.剪刀石头布有三种结果使用3x3的矩阵 111111111(1)(1)111111111 \begin{matrix} 1 1 1 \\...
2018-08-22 20:26:32
445
原创 linux 学习笔记2
程序和进程1.程序程序:存储在磁盘上某个目录上的可执行文件。2.进程和进程ID程序的执行实例被称为进程(windows 叫做任务),每个进程都有一个进程ID。打印进程ID#include "apue.h"int main(void){ pritnf("hello world from process ID %ld\n",(long)getpid());...
2018-07-21 21:11:15
116
原创 LINUX 学习笔记 文件和目录
1.文件系统 unix中文件和目录是一种层次结构,所有东西的起点是称为根(root)的目录。 目录:是一个包含目录项的文件。包含文件名、和该文件名的属性 文件属性:是指文件属性(文件还是目录)、文件大小、、、、、、2.文件名 命名规则:句点(.)、下划线()和下划线()的字母和数字。 。 和 。。 ,(。)指向当前目录,(。。) 指向父级目录。(英文的点不大好看)...
2018-07-21 20:06:10
145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人