常用Bootstrap方法
常用Bootstrap方法开始12345678910111213141516171819202122<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'" /> <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self ...
Electron入门
Electron入门换源淘宝今年刚刚换源了,结果怎么设置都报错,所以干脆使用官方源。
Windows下输入:
1npm config edit
添加:
123disturl=https://registry.npmmirror.com/-/binary/nodeelectron_mirror=https://registry.npmmirror.com/-/binary/electron/registry=https://registry.npmmirror.com
运行Hello World新建一个项目文件夹,在该文件夹下:
1npm init
“package.json”文件中写了一些该工程的基本信息,入口点默认“index.js”,如果看着别扭可以自己改成“main.js”。
然后开始在该工程文件夹下下载Electron组件:
1npm install electron --save-dev
打开“package.json”的“scripts”字段下加上:
1"start":"electron .",
在该工程文件夹下新建“ind ...
Web入门-类实战
Web入门-类实战基础知识做题[GKCTF 2021]easycms扫网站发现admin.php后台,尝试弱口令admin/12345成功。
来到设计->导出主题->保存,开始下载一个压缩包,复制下载连接发现Base64编码部分为本地路径,尝试将“/flag”编码后加入URL。
1node4.anna.nssctf.cn:28980/admin.php?m=ui&f=downloadtheme&theme=L2ZsYWc=
成功下载。
Web入门-常见信息搜集方法
Web入门-常见信息搜集方法基础知识git相关常规.git文件夹泄漏:
1234567git initgit add flag.phpgit commit -m "flag"scrabble http://127.0.0.1/git_testlscat flag.php
git回滚:
1234567891011cat flag.phpecho "flag is old" > flag.phpgit add flag.phpgit commit -m "old"scrabble http://127.0.0.1/git_testlscat flag.phpgit reset --hard HEAD^lscat flag.php
也可通过git log -stat查看每个commit修改了哪些文件,再用git diff HEAD commit-id比较当前版本和想查看的commit之间的变化。
git分支:
用GitHacker工具,略。
其他git泄漏:.git/config文件夹可能有access_toke ...
PWN入门-栈迁移
PWN入门-栈迁移基本原理在正常栈溢出时,需要设计ebp和Return Address俩。ebp篡改为需要将栈迁移到的地址-4,Return Address需要篡改为某个含leave;retn;的ROPgadget。
实际运行时,先运行原先的leave;retn;:mov esp,ebp;时esp指向被篡改的ebp;pop ebp;将篡改的地址放入ebp,且esp上移,指向被篡改的Return Address;pop eip;将ROPgadget的地址放入eip,篡改执行流。
在进入ROPgadget后,再次执行leave;retn;:mov esp,ebp时将迁移地址-4移入esp,栈顶指针被劫持,发生栈迁移;pop ebp;时ebp仍为迁移地址-4,但esp拉高4字节,指向迁移地址;pop eip时迁移地址移入eip,成功篡改执行流。
做题[HDCTF 2023]KEEP ON123456789101112131415161718192021222324from pwn import *context(log_level='debug',os='lin ...
常见混淆逆向做题
常见混淆逆向做题做题[RoarCTF 2019]polyreOLLVM控制流平坦化。用IDA的D-810进行恢复,配置使用default_unflattening_ollvm.json,然后Load。IDA的F5一般直接从缓存里找,可以选择随便NOP一句再撤销,再F5。发现为奇怪的加密。
12345678910111213141516171819202122#include <cstdio>using namespace std;unsigned long long int enc[7]={ 0xBC8FF26D43536296, 0x520100780530EE16, 0x4DC0B5EA935F08EC, 0x342B90AFD853F450, 0x8B250EBCAA2C3681, 0x55759F81A2C68AE4, 0xB0004B7679FA26B3};unsigned long long int flag[7];signed long long int tmp;int main(void){ for(regi ...
小众语言逆向
小众语言逆向笔记BrainFuck-Compiler.py
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103def shrinkBFCode(code): cPos2Vars = {} #位置对应的变量 cPos2Change = {} #位置中 + 号 增加的值 varPos = 0 nCode = [] incVal = 0 lc = None dataChangeOp = set(['+', '-']) dataShiftOp = set(['>', '< ...
虚拟机题目入门
虚拟机题目入门笔记IDADefines.cpp
12345678910111213141516171819202122232425262728#include <cstdio>//测试 LOBYTE、HIBYTEtypedef unsigned char uint8;typedef unsigned short uint16;typedef unsigned long DWORD_PTR;#define BYTE uint8#define WORD uint16#define DWORD unsigned long#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))#define BYTEn(x, n) (*((BYTE*)&(x)+n))#define WORDn(x, n) (*((WORD*)&(x)+ ...
TEA系列加密算法逆向
TEA系列加密算法逆向笔记XXTEA_decrypt.py
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849from ctypes import *def MX(z,y,sum1,k,p,e): return c_uint32(((z.value>>5^y.value<<2)+(y.value>>3^z.value<<4))^((sum1.value^y.value)+(k[(p&3)^e.value]^z.value)))def btea(v,k,n,delta): if n>1: sum1=c_uint32(0) z=c_uint32(v[n-1]) rounds=6+52//n e=c_uint32(0) while rounds>0: sum1.value+=delta e.value=((sum1.value>>2)&3) for p ...
C#逆向常见题型
C#逆向常见题型做题[强网杯 2022]GameMasterDIE查壳为.NET,用dnSpy-x86打开,发现gamemessage被传入memory中。Ctrl+Shift+R查引用,在goldFunc中发现可疑函数。genCode()中为AES-PKCS7加密,发现没什么实质作用。
捋清思路:把gamemessage文件先$\oplus34$再AES-ECB
exp:
12345678910from Crypto.Cipher import AESkey=b'Brainstorming!!!'block_size=16cipher=AES.new(key,AES.MODE_ECB)with open('D://CTF-Workbench//gamemessage','rb') as f: ciphertext=f.read()ciphertext=bytes([byte^34 for byte in ciphertext])plaintext=cipher.decrypt(ciphertext)with open( ...