自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 【BUUCTF-PWN】13-jarvisoj_level2_x64

ret指令的地址,再接着是’/bin/sh’字符串的地址,最后是system()函数的地址。ret处,该指令会将当前栈顶的元素(‘/bin/sh’字符串的地址)出栈并存入rdi中,并返回到下一条指令处。此时栈中就只有system()函数的地址了,所以下一条指令正是system(),而它需要的参数正好就在rdi寄存器中,这样就执行了system(’/bin/sh’)现在只需要让函数返回到system,并传入参数“/bin/sh”就可以了。32位的比较简单,只需要返回地址+下一次的返回地址+参数1+参数2+…

2024-07-05 00:58:41 472

原创 【BUUCTF-PWN】12-get_started_3dsctf_2016

垃圾数据–>mprotect函数地址–>三个连续的pop地址–>.got.plt表起始地址–>内存长度–>内存权限–>read函数–>三个连续的pop地址–>read函数的三个参数–> .got.plt表的起始位置。其中gets()函数存在栈溢出,溢出距离为0x38,这里是使用的esp寻址,属于外平栈,不需要覆盖ebp的四个字节。第二种是直接在IDA中查找,crtl+s调出程序的段表,这里还不太清楚怎么去选择可用的程序段,看很多博客都是直接用的.got.plt的起始位置。

2024-07-05 00:40:26 1166

原创 【BUUCTF-PWN】11-ciscn_2019_c_1

再利用pop_rdi;ret语句进行将下一层值推入寄存器rdi中作为参数,本次payload构建目的在于利用puts函数泄露本身的真实地址,从而获取Libc基址,所以将puts_got作为参数,运行函数地址为puts_plt,即用puts来打印出Puts_got的地址,最后再返回start函数重新运行,在后续中再次利用libc的基址找出system以及“bin/sh”的地址,从而构建第二次payload,要注意的是由于靶机是Ubuntu,所以要构建栈平衡,第二次payload需要加入ret。

2024-07-05 00:28:02 909

原创 【BUUCTF-PWN】10-bjdctf_2020_babystack

因为读入的字符长度可以由用户输入的第一个参数值决定,因此read函数存在栈溢出。这里做不做堆栈平衡都可以,试了一下加不加1都可以打通。简单的栈溢出,ret2text。后门函数地址0x4006E6。64位,开启了NX保护。覆盖距离为0x10+8。

2024-07-05 00:20:44 148

原创 【BUUCTF-PWN】9-ciscn_2019_n_8

4 + p32(17) #qword/IDA在32位里面是4个字节,在64位是/8个字节。不属于栈溢出,应该是比较简单的pwn,看懂代码逻辑+使用pwntools。32位,开启了Stack、NX、PIE保护。即当var数组的第十四个元素是17就可以。

2024-07-05 00:19:02 349

原创 【BUUCTF-PWN】8-jarvisoj_level2

32位的分布是:返回地址+下一次的返回地址+参数1+参数2+…这里没有可以直接利用的后门函数,所以需要构造 system(/bin/sh)去执行。system的地址还不是0x0804A038,而是0x08048320。查看vulnerable_function()函数。需要找不是extern的system函数。/bin/sh的地址0x0804A024。read()函数存在缓冲区溢出漏洞。32位,开启了NX保护。

2024-07-05 00:16:38 299

原创 【BUUCTF-PWN】7-[第五空间2019 决赛]PWN5

因此将正常的printf语句转为无参数的printf,即将参数放到格式化字符串前面构造payload,从而利用%n将前面的字符数写入到指定地址中,passwd的每个字节即写入地址中的值是p32(0x804c047)+p32(0x804c046)+p32(0x804c045)+p32(0x804c044)的长度,也就是4x4=16,二进制为0x10,所以passwd就是4个0x10拼接起来后的计算结果str(0x10101010)=269488144。32位小端排序,有栈溢出保护。存在格式化字符串漏洞。

2024-07-05 00:13:46 544

原创 【BUUCTF-PWN】6-jarvisoj_level0

buf变量长度为128,但是read可以读入0x200长度的字符,存在栈溢出,需要覆盖的长度为0x80+8。vulnerable_function()函数。64位,开启了NX保护。

2024-07-05 00:08:58 235

原创 【BUUCTF-PWN】5-pwn1_sctf_2016

变量s在栈中的位置位0x3c,想要溢出到Rbp需要60+4(因为是32位)=64。fgets()函数只允许输入32位长度,但是I可以变为you,因此可以输入20个I加三个a。这里中间处理的代码还看不太懂,只能看到you、i还有replace字符替换函数。试着运行效果如下,可知代码会把输入的I替换为you。找一下后门函数,函数的位置是0x8048F0D。strcpy()函数存在缓冲区溢出。32位,开启了NX保护。

2024-07-04 23:59:54 187

原创 【BUUCTF-PWN】4-ciscn_2019_n_1

这里为了堆栈平衡+1反而没办法打通,不+1反而可以成功,因此后面做题的时候加不加1都试一下。需要v1变量溢出到v2,然后给v2 11.28125的值。查看变量在栈中的位置:v1 0x30 v2 0x04。11.28125的十六进制值是0x41348000。checksec检查是64位,开启了NX保护。这里再试验第二种思路,溢出到变量2。后门函数的地址是0x4006BE。

2024-07-04 23:57:36 407

原创 【BUUCTF-PWN】3-warmup_csaw_2016

checksec检查是64位,未开启任何保护。直接字符串查找system或者flag。后门函数的地址是0x40060D。gets()函数存在栈溢出。

2024-07-04 23:51:12 212

原创 【BUUCTF-PWN】2-rip

64位rbp是8位,32位rbp是4位,堆栈平衡需要在后门函数地址+1。查看main函数,gets()存在栈溢出。64位,未开启任何保护。定位到后门函数的地址。

2024-07-04 23:47:50 154

原创 AWD攻防学习总结(草稿状态,待陆续补充)

CTF——9款网站目录扫描工具推荐——附下载链接与相关字典:https://blog.csdn.net/weixin_51735061/article/details/124236800。漏洞工具合集:https://github.com/Mr-xn/Penetration_Testing_POC。下载地址:https://gitee.com/duran3000/awd-tools。Web日志安全分析工具v2.0.rar apache日志分析工具。seay扫描速度快,但是扫描深度小且只支持PHP。

2023-08-09 00:13:24 1028

原创 Kali中AWD靶机环境搭建

详见:https://blog.csdn.net/aodechudawei/article/details/122450720?参照:https://blog.csdn.net/weixin_34211761/article/details/92983952。修改方法参见:https://www.cnblogs.com/Triangle-security/p/11332223.html。https://pan.baidu.com/s/18KlIeluaTtm-kT3KuXHseQ 密码:cvdn。

2023-08-06 19:06:10 2860 1

原创 CTF-MISC:BUUCTF练习汇总(26-40题)

.-. ----. …- ----. -.-. -…----- .---- —…----- ----. …— ----. .---- ----. .---- -.-.4)key_part_one中NUL文件包含了前半段flag,key_part_two中where_is_flag_part_two.txt:flag_part_two_is_here.txt文件包含了后半段flag。binwalk+foremost分离得到zip压缩包,解压后得到的文件里存在flag.txt,打开即可获取到flag。

2023-08-03 00:57:06 2423

原创 CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

2023-07-30 19:07:52 6396 1

原创 SQLi-LABS 1-22关(Basic Challenges) 手动注入--(缓慢更新中 12/22)

首先判断注入类型,分别使用?时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长,时间盲注多与if(expr1,expr2,expr3)结合使用,此if语句意思为:如果expr1是TRUE,则if()的返回值是expr2;进入到MySQL所在目录,我这里是D:\software\phpstudy_pro\Extensions\MySQL5.7.26\bin,目录栏直接输入cmd调出cmd终端,输入mysql -u root -p ,然后输入密码即可成功登陆数据库。

2022-11-18 22:40:35 3645

原创 【JDBC学习笔记】JDBC基础

JDBC学习笔记---基础入门部分

2022-08-10 00:13:49 370

原创 MySQL基础入门学习笔记(二)

MySQL基础入门学习笔记(二)1、SQL、DB、DBMS分别是什么,它们之间的关系18、创建表:19、insert语句插入数据20、表的复制21、将查询结果插入到一张表中22、update修改数据23、delete删除数据24、约束:非空约束(not null)、唯一性约束(unique)、主键约束(primary key)、外键约束(foreign key)25、存储引擎(了解)26、事务的概念、事务的特性和事务的隔离级别27、索引:概念、作用、索引对象的创建和删除、索引的实现原理1、SQL、DB、D

2022-03-23 23:03:22 1356

原创 MySQL基础入门学习笔记(一)

MySQL基础入门学习笔记1、SQL、DB、DBMS分别是什么,它们之间的关系2、什么是表?3、SQL语句的分类4、查看“演示数据”的表结构5、常用命令6、简单的查询 关键字:select7、条件查询 关键字:where8、排序数据 关键字:order by9、分组函数/聚合函数/多行处理函数10、单行处理函数11、分组查询 group by 和 having12、总结一个完整的DQL语句以及执行顺序13、查询结果集的去重:distinct14、连接查询:内连接和外连接1、SQL、DB、DBMS分

2022-03-22 00:41:29 1173

原创 【动力节点 Java进阶学习笔记】第九章 注解

【动力节点 Java进阶学习笔记】第九章 注解1、什么是注解、注解的作用,以及如何自定义注解和使用注解2、内置注解:Deprecated和Override3、元注解:Target和Retention4、注解中定义属性:怎么定义、默认值、value省略属性名、属性支持的类型、数组属性5、反射注解6、反射在开发中的作用示例1、什么是注解、注解的作用,以及如何自定义注解和使用注解注解的定义:       注解其实就是代码中的特殊标记,这

2022-03-13 22:07:04 719

原创 【动力节点 Java进阶学习笔记】第八章 反射机制

【动力节点 Java进阶学习笔记】第八章 反射机制1、什么是反射机制、反射机制的作用和相关的类2、获取Class的三种方式、通过获取的Class实例化对象、获取文件的绝对路径3、类加载器的概念、分类以及双亲委派机制4、通过反射机制反射属性、如何读取和修改属性值5、通过反射机制反射方法、如何调用对象的某个方法6、通过反射机制反射构造方法、如何调用构造方法实例化对象7、通过反射机制获取父类以及父类型接口1、什么是反射机制、反射机制的作用和相关的类反射机制:可以操作字节码文件作用:可以让程序更加灵活。相

2022-03-13 15:48:19 4199

原创 【动力节点 Java进阶学习笔记】第七章 多线程

【动力节点 Java进阶学习笔记】第七章 多线程1、进程和线程的基本概念、区别以及多进程和多线程的作用2、创建线程的两种方式、启动线程的方法、run()和start()的区别3、线程的生命周期4、线程中常用的方法以及线程休眠、唤醒、终止的方法5、线程的调度:线程调度模型、与线程调度有关系的方法6、多线程安全:存在线程安全问题的三个条件、线程同步机制及语法、以及开发中解决线程安全问题的方法7、守护线程的概念和设置守护线程的方法、定时器的概念和使用7.1 守护线程7.2 定时器8、实现线程的第三种方式:实现Ca

2022-02-19 22:49:42 630

原创 【动力节点 Java进阶学习笔记】第六章 IO流

【动力节点 Java进阶学习笔记】第六章 IO流IO流和FIle类总结1、IO流总结2、File类中方法总结IO流和FIle类学习笔记1、Java流概述和IO流的分类2、FileInputStream的使用:按字节和byte数组两种方式读取文件内容3、FileOutputStream的使用:覆盖方式和追加方式写入数组中内容4、FileReader的使用5、FileWriter的使用6、缓冲流BufferedReader和BufferedWriter的使用以及转换流的使用、节点流和包装流7、数据流DataOu

2022-02-12 23:07:56 674

原创 【动力节点 Java进阶学习笔记】第五章 集合

【动力节点 Java进阶学习笔记】第五章 集合集合概述1、集合概述和集合继承结构图Collection部分2、Collection接口常用方法、迭代器Iterator、使用迭代器遍历集合元素3、List接口中常用方法、ArrayList和LinkedList、数组和链表的特点4、泛型的优缺点和使用、for each的使用5、HashSet和TreeSet集合存储元素特点Map部分6、Map接口中常用方法和Map集合的遍历7、HashMap:哈希表数据结构和方法map.put(k,v)、map.get(k)的

2022-01-15 23:14:10 739

原创 【动力节点 Java进阶学习笔记】第四章 异常处理

【动力节点 Java进阶学习笔记】第四章 异常处理1、异常的基本概念:什么是异常、异常的作用、异常的存在形式2、异常的继承结构和分类3、编译时异常和运行时异常的定义和区别4、异常的捕获和处理5、异常对象两个非常重要的方法:getMessage()和printStackTrace()6、finally语句的特性和使用7、final finally finalize有什么区别?8、如何自定义异常和使用1、异常的基本概念:什么是异常、异常的作用、异常的存在形式    &

2022-01-11 21:50:40 365

原创 【动力节点 Java进阶学习笔记】第三章 常用类

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-01-09 19:10:26 494

原创 Java常用类--String类

关于Java JDK中内置的一个类:java.lang.StringString类的知识点汇总1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。2、在java中随便使用双引号括起来的都是String对象。例如:“abc”,“def”,“hello world!”,这是3个String对象。3、java中规定,双引号括起来的字符串,是不可变的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd",也不能变成"ab"4、在JDK当中双引号括起来的字符串,例如:“abc”

2021-12-27 21:56:52 384

原创 Java学习--二分查找

二分查找的java实现二分查找简介如何选择使用线性查找还是二分查找代码实现二分查找简介二分查找也是在数组中查找数据的算法,但要求数据已经排好序利用已排序好的数组,每一次查找都可以将查找范围减半,查找范围只剩一个数字时查找结束二分查找时间复杂度为O(logn)如何选择使用线性查找还是二分查找二分查找建立在数据已经排好序的基础上才能使用,因此添加数据时必须加到合适的位置,这就需要额外耗费维护数组的时间线性查找则对数据排序没有要求,添加数据时直接加在末尾即可,不需要耗费时间具体使用哪种查找方法,取

2021-12-27 20:59:22 214

原创 Java学习--选择排序

选择排序的java实现选择排序简介代码实现选择排序简介选择排序就是重复“从待排序的数字中寻找最小值,并将其与序列最左边的数字进行交换”这一操作的算法使用线性查找在序列中寻找最小值时间复杂度O(n^2)第1轮需要比较n-1个数字,第2轮需要比较n-2个数字…第n-1轮需要比较1个数字,总次数与冒泡排序相同,为(n-1)n/2每轮中交换数字次数最多为1次,即最多总共交换n-1次代码实现package com.javalearn.javase.review;import java.util.A

2021-12-27 20:52:41 184

原创 Java学习--冒泡排序

冒泡排序的java实现冒泡排序简介算法步骤时间复杂度:O(n^2)思路及代码实现数组遍历元素的三种方式冒泡排序简介冒泡排序就是重复”从序列左边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置“这一操作的算法。数字会像泡泡一样,慢慢从左往右浮到序列的顶端。算法步骤1、从序列最左边放置一个天平,比较天平两边数字的大小,如果左边数字较大,就交换两边数字的位置;2、天平往右移动一个位置,继续比较两边数字的大小,重复同样的操作直到天平到达序列最右边;3、将天平移回最左边,重复同样的操作直到所有数

2021-12-26 18:45:23 406

原创 Java基础部分知识点汇总

Java基础部分知识点汇总第一章 Java开发环境搭建第二章 标识符与关键字第三章 变量第四章 数据类型第五章 运算符第六章 控制结构第七章 方法第八章 认识面向对象第九章 对象的创建和使用第十章 封装第十一章 this和static第十二章 继承第十三章 方法覆盖和多态第十四章 super第一章 Java开发环境搭建1、常用的DOS命令:创建目录:mkdir 切换目录:cd 相对路径和绝对路径cls 清屏dir 列出当前目录下内容exit 退出DOS命令窗口del命令,删除一个或者多个

2021-12-25 22:33:19 404

原创 《算法图解》学习笔记:第1章 算法简介

1、引言概念:算法是一组完成任务的指令。任何代码片段都可视为算法。2、二分查找输入为一个有序的元素列表对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步应选择效率最高的算法,以最大限度地减少运行时间或占用空间二分查找python实现:我的代码-python3:def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high:

2020-07-16 01:13:43 222

原创 《Python语言程序设计》学习笔记四:程序的控制结构

该笔记内容整理于《Python语言程序设计》课程控制结构:顺序结构、分支结构、循环结构1、程序的分支结构:单分支结构:if <条件>:   <语句块>二分支结构:if <条件>:   <语句块1>else:   <语句块2>紧凑形式:<表达式1> if <条件> else <表达式2>注意是表达式不是

2020-07-14 00:24:50 329

原创 《Python语言程序设计》学习笔记三:基本数据类型

该笔记内容整理于《Python语言程序设计》课程1、数字类型及操作整数类型:没有取值范围限制pow(x, y)函数:计算x的y次方4种进制表示形式:十进制、二进制(以0B或0b开头)、八进制(以0o或0O开头,Octal)、十六进制(以0x或0X开头)浮点数类型:浮点数的取值范围和小数精度都存在限制,但常规计算可忽略浮点数间运算存在不确定尾数,不是bug:如0.1+0.2结果为0.30000000000000004不确定尾数的原因:二进制并不是与十进制完全相等,二进制表示小数字,可以无限接

2020-07-10 22:47:21 235

原创 《Python语言程序设计》学习笔记二:Python基本图形绘制

该笔记内容来源于《Python语言程序设计》课程1、计算机技术的演进过程:1946-1981          计算机系统结构时代                      &n

2020-06-28 23:36:38 330

原创 《Python语言程序设计》学习笔记一:python基本语法元素

该笔记内容来源于《Python语言程序设计》课程1、计算机的概念:功能性:对数据的处理,包括数据计算、输入输出处理和结果储存可编程性:可以根据一系列指令自动地、可预测地、准确地完成操作者的意图2、摩尔定律:集成电路规模指数增长(单位面积集成电路上晶体管数量)3、编译和解释:源代码:人类可读,高级语言目标代码:人类不可读,机器语言编译:将源代码一次性转变为目标代码的过程------>先编译再执行解释:将源代码逐条转换为目标代码同时逐条运行的过程------->边解释边执行4、

2020-06-28 22:11:36 293

原创 《Python语言程序设计》学习:连续质数计算

题目内容:获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。输入格式:输入一个整数或浮...

2020-04-25 00:12:39 4425

原创 中国大学MOOC《程序设计入门-C语言》学习(十):单词长度

题目内容:你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it’s”算一个单词,长度为4。注意,行中可能出现连续的空格。输入格式:输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有...

2018-12-31 19:18:32 799

原创 中国大学MOOC《程序设计入门-C语言》学习(九):Tic-Tac-Toe游戏(井字棋)

Tic-Tac-Toe游戏(井字棋)问题描述:读入一个3x3的矩阵,矩阵中的数字为1表示该位置上有一个X,为0表示为O;程序判断这个矩阵中是否有获胜的一方,输出表示获胜一方的字符X或O,或输出无人获胜 。程序:需要使用二维数组,这里将检查行和检查列合并在了一起,将检查主对角线和副对角线也合并在了一起。对程序输入测试案例后,未发现问题。#include &amp;lt;stdio.h&amp;gt;......

2018-12-13 23:50:45 2018 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除