Spring5
Spring5一、Spring 框架概述 Spring 是轻量级的开源的 JavaEE 框架 Spring 可以解决企业应用开发的复杂性 Spring 有两个核心部分:IOC 和 Aop IOC:控制反转,把创建对象过程交给 Spring 进行管理 Aop:面向切面,不修改源代码进行功能增强 Spring 特点 方便解耦,简化开发 Aop 编程支持 方便程序测试 方便和其他框架进行整合 方便进行事务操作 降低 API 开发难度 ==Spring5 入门案例== jar包地址:https://repo.spring.io/release/org/springframework/spring/ 创建普通类,在这个类创建普通方法 12345public class User { public void add() { System.out.println("add......"); }} 创建 Spring...
逆向攻防世界CTF系列7-logmein
逆向攻防世界CTF系列7-logmein==重要知识点:不同ida版本的反编译结果不同!!!== 64位,main函数 目的是执行最后的这段代码 审计代码,v3长度>=v8长度 if ( i >= strlen(v8) ) sub_4007C0(); 则可知v3长度必须等于v8长度,否则下标i会>=v8 ==看到下面那段代码的时候发现怎么都解释不通,后来发现了一个震惊小白的事,就是不同版本的ida反编译的伪代码不同,我刚才用的是idapro 8.3 然后去试了idapro7.7 和idapro 7.0,发现7的反编译结果才是正确的,如下图== 用上了v6和v7,而之前的伪代码都没有用上!!!! 让我们再解读一下下面那个语句吧: 重点是:(_BYTE...
SpringBoot基础篇
SpringBoot基础篇一、Springboot介绍 基于SpringBoot官网创建项目,地址:https://start.spring.io/,**需联网** 基于阿里云创建项目,地址:https://start.aliyun.com 示例如图 建议选定2.5.7版本 隐藏文件 1.1...
SpringMVC
SpringMVC一、SpringMVC简介1.1 什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是==处理数据== JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 ==Student、User== 等 一类称为业务处理 Bean:指 ==Service 或 Dao...
逆向攻防世界CTF系列6-simple-unpack
逆向攻防世界CTF系列6-simple-unpack 发现被加壳了,要脱壳,根据信息upx去寻找,找到脱壳工具脱壳,这里我提供一个,当然你也可以根据exeinfo后面的提示 https://pan.xunlei.com/s/VNu8zizHwjh-TCsW336-Hl0jA1?pwd=f3u5# 没壳了,扔进IDApro 64位,shift+F12找到flag flag{Upx_1s_n0t_a_d3liv3r_c0mp4ny}
GDB基本使用及pwn常用命令
GDB基本使用及pwn常用命令i r查看寄存器 start 运行程序,停在 main 函数的第一行。 run 从程序的入口点开始执行,并会一直运行,直到.程序正常结束。 b main ,b *(0xdsds)设置断点 i b查看断点,d main删除断电,disable b 2,让断点失效。enable b 3 si会进入xx方法实现的里面 ni是下一步。finish步出 c继续 显示从地址0x100开始的10个十六进制数:x/10x 0x100 显示从寄存器$rax开始的4个无符号十进制数:x/4uw $rax 显示字符数组str的内容,直到遇到’\0’结束:x/s str x/20g $rbp-0x20:这个命令表示从地址$rbp-0x20开始,以十六进制格式打印20个g大小的内存单元。这里的g通常代表8字节(64位)的巨量(giant word)。所以它会打印20个8字节的值,总共160字节的数据。这种格式通常用于查看较大数值或指针地址(在64位系统上指针也是8字节)。 x/20b...
逆向攻防世界CTF系列5-open-source
逆向攻防世界CTF系列5-open-source12345678910111213141516171819202122232425262728293031323334#include <stdio.h>#include <string.h>int main(int argc, char *argv[]) { if (argc != 4) { printf("what?\n"); exit(1); } unsigned int first = atoi(argv[1]); if (first != 0xcafe) { printf("you are wrong, sorry.\n"); exit(2); } unsigned int second = atoi(argv[2]); if (second % 5 == 3 || second % 17 != 8) { ...
pwn细节
pwn细节send和sendlineread(fd, buf, count) 文件描述符,为0,从输入的缓冲区中读取(标准输入),通俗理解为从哪读,即使超过count也能输入到缓冲区;读到哪;读入字符数。 sendline和send都是发送数据,sendline会在发送的数据末尾加一个回车。而这个回车所造成的影响,是跟对应的输入函数有关系,输入函数有scanf(”%s”),gets(),read(),fgets(),这四个函数。 read会把这个回车(ASCII码也就是0a)存入到栈中 输入的数据先是放入了缓冲区中,再从缓冲区中写到了指定的地址,虽然sendline的回车没有被写进去,但是回车停留在了缓冲区中。接下来如果有gets函数需要获取输入的话,gets函数会因为这个缓冲区里的回车直接结束,不会从用户这里获取输入。 使用 gets() 时,系统会将最后输入的换行符(也就是回车)从缓冲区中取出来,然后给舍弃,因此缓冲区中不会遗留换行符(不用考虑send和sendline的区别) scanf是从第一个非空白字符(空格 换行...
逆向攻防世界CTF系列4-re1
逆向攻防世界CTF系列4-re1 查壳,无壳32位 进到这 分析一波,只有v3是正的才会输出aflag,也就是v9和v5.mxxx相等,又看到v5和xmmmword有关,直接点进去: 右键双击两下,列表中和有转化好的值,完成转化,拼接得到结果: 这里有个知识点,大端与小端 。假设一个十六进制数0x12345678 大端的存储方式是:12,34,56,78,然后读取的时候也是从前往后读 小端的存储方式是:78,56,34,12,然后读取的时候是从后往前读取 正的发现不对,所以,最后的flag应该是:DUTCTF{We1c0met0DUTCTF}
pwn入门-ret2text+ROP详解
pwn入门-ret2text+ROP详解1234567#关闭栈保护gcc question_4_1.c -m32 -fno-stack-protector -o main#全部关闭gcc -no-pie -fno-stack-protector -z execstack -m32 -o 3.exe 3.c#-no-pie:地址随机化#-fno-stack-protector:没有堆栈保护#-z execstack:堆栈可执行 ret2text 即控制程序执行程序本身已有的的代码 (即, .text 段中的代码) 。其实,这种攻击方法是一种笼统的描述。我们控制执行程序已有的代码的时候也可以控制程序执行好几段不相邻的程序已有的代码 (也就是 gadgets),这就是我们所要说的...









