分析
checksec分析
123➜ pwn checksec --file=bjdctf_2020_babystack2RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILEPartial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 75) Symbols No 0 1 bjdctf_2020_babystack2
开启了NX保护
ida分析
12345678910111213141516171819202122232425int __cdecl main(int argc, const char **argv, const char **envp){ char buf[12]; // [rsp+0h] [rbp-10h] BYREF size ...
分析
安全保护
123456Arch: i386-32-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x8048000)Stripped: No
ida分析
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061int __cdecl main(int argc, const char **argv, const char **envp){ int result; // eax int v4; // [esp+0h] [ebp-100h] BYREF char src[4]; // [esp+4h] [ebp-FCh] BYREF char v6[124]; // [esp+8h] [ebp-F8h] BYREF cha ...
信息安全
未读分析
checksec
123➜ pwn checksec --file=fm RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILEPartial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH 73) Symbols No 0 2 fm
ida
123456789101112131415161718int __cdecl main(int argc, const char **argv, const char **envp){ char buf[80]; // [esp+2Ch] [ebp-5Ch] BYREF unsigned int v5; // [esp+7Ch] [ebp-Ch] v5 = __readgsdword(0x14u); ...
信息安全
未读分析直接拖入ida,F5查看源码:
12345int __cdecl main(int argc, const char **argv, const char **envp){ vuln(); return 0;}
查看vuln函数实现:
12345678910111213141516171819202122232425262728int vuln(){ const char *v0; // eax char s[32]; // [esp+1Ch] [ebp-3Ch] BYREF char v3[4]; // [esp+3Ch] [ebp-1Ch] BYREF char v4[7]; // [esp+40h] [ebp-18h] BYREF char v5; // [esp+47h] [ebp-11h] BYREF char v6[7]; // [esp+48h] [ebp-10h] BYREF char v7[5]; // [esp+4Fh] [ebp-9h] BYREF printf("Tell me something ...
信息安全
未读原始 GDB 不适合用于逆向工程和漏洞开发。输入x/g30x $esp并不好玩,而且无法提供太多信息。因此,pwndbg便应运而生。pwndbg是一个直接加载到 GDB 中的 Python 模块,它提供了一套实用程序和辅助工具来解决 GDB 中的所有问题并消除粗糙的边缘。
安装123git clone https://github.com/pwndbg/pwndbg.gitcd pwndbg./setup.sh
配置
查看
1cat .gdbinit
保留pwndbg source,其他的注释掉
使用指令
help //帮助
i //info,查看一些信息,只输入info可以看可以接什么参数,下面几个比较常用
i b //常用,info break 查看所有断点信息(编号、断点位置)
i r //常用,info registers 查看各个寄存器当前的值
i f //info function 查看所有函数名,需保留符号
show //和inf ...
分析12345Arch: i386-32-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: PIE enabled
保护全开
ida查看一下逻辑:
12345678910111213141516171819202122232425262728293031323334353637383940int __cdecl main(int argc, const char **argv, const char **envp){ int v4; // [esp-14h] [ebp-20h] int v5; // [esp-10h] [ebp-1Ch] var[13] = 0; var[14] = 0; init(); puts("What's your name?"); __isoc99_scanf("%s", var, v4, v5); if ( *(_QWORD *)&var[13] ) ...
通用寄存器对于 x86-64 架构,共有16个64位通用寄存器,各寄存器及用途如下图所示:
每个寄存器的用途并不是单一的。
%rax 通常用于存储函数调用的返回结果,同时也用于乘法和除法指令中。在imul 指令中,两个64位的乘法最多会产生128位的结果,需要 %rax 与 %rdx 共同存储乘法结果,在div 指令中被除数是128 位的,同样需要%rax 与 %rdx 共同存储被除数。
%rsp 是堆栈指针寄存器,通常会指向栈顶位置,堆栈的 pop 和push 操作就是通过改变 %rsp 的值即移动堆栈指针的位置来实现的。
%rbp 是栈帧指针,用于标识当前栈帧的起始位置
%rdi, %rsi, %rdx, %rcx,%r8, %r9 六个寄存器用于存储函数调用时的6个参数(如果有6个或6个以上参数的话)。
被标识为 “miscellaneous registers” 的寄存器,属于通用性更为广泛的寄存器,编译器或汇编程序可以根据需要存储任何数据。
“Caller Save” 和 ”Callee Save” 寄存器这里还要区分一下 “Caller Save” 和 ”Callee ...
信息安全
未读分析
checksec
123➜ pwn checksec --file=pwnRELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILEPartial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH No Symbols No 0 2 pwn
ida
123456789101112// positive sp value has been detected, the output may be wrong!void __usercall __noreturn start(int a1@<eax>, void (*a2)(void)@<edx>){ int v2; // esi int v3; // [esp-4h] [ebp-4 ...
分析
checksec:
123456Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) Stripped: No
开启了nx保护
ida分析
123456int __cdecl main(int argc, const char **argv, const char **envp){ be_nice_to_people(); vulnerable_function(); return write(1, "Hello, World\n", 0xDu);}
查看vulnerable_function函数:
12345ssize_t vulnerable_function(){ char buf[136]; // [esp+10h] [ebp-88h] BYREF return read(0, buf, ...
明天就走了,后面的更新博客可能没这么频繁了,今天想写一点我一直想表达的,这也是我自身很大的矛盾点的具象体现:感性 和 理性 的矛盾体。
今天想聊的话题是偏爱,关于这个词,其实我一点认知都没有,聊到偏爱,只会反应到仙剑奇侠传里的插曲《偏爱》。但后续的生活种,我从前任的口中听到了偏爱的需求,可以理解到对方对种情感需求的极度渴望。关于“偏爱”,就是在那个时候,我有了很多的思考,但是这些思考也没有分享出去,因为想与做其实很难一致,也就是我一开始提到的,我是一个感性和理性的矛盾体。
当然,这次写关于偏爱这个话题,我更多的是想从思辨的角度去聊,这也是我内心真实的想法,虽然和实际做法矛盾冲突,原因已经解释过了。
关于偏爱,其实是个悖论萨特在《存在与虚无》中早已预见现代爱情的悖论:**我们既渴望成为爱人世界中的绝对中心,又恐惧于完全消融在对方的主体性中。**这种矛盾不是个别现象,而是人类关系中的普遍困境,它不断在现代亲密关系中重现:我们既希望伴侣因我们而改变,又害怕他们失去自我;既渴望被全然爱慕,又担忧成为对方生活中的可替换零件。
关于原则原则性强的人之所以在爱情中显得”曲高和寡”,正是因为他们的 ...