自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(23)
  • 资源 (1)
  • 问答 (7)
  • 收藏
  • 关注

原创 攻防世界 pwn-100

1 题目2 分析如上图,这道题很简单粗暴,直接暴露溢出点,但是需要注意的是,每次输入读200!这点下面会有坑。思路:利用ROP泄露出read的地址,利用Libsearch获得system和/bin/sh的地址。这些都是常规流程。但是,有一点要注意,在发送payload的时候,一定不能使用sendline或者sendafterline。因为这两个方法会自动在你的payload后面添加\n。本题严格读取200单元,多出来的\n作为下次读取的开头,会导致第二次发送的错误!exp如下f

2020-10-26 16:20:16 286

原创 攻防世界 pwn1

1 题目2 分析流程很简单,提供三个功能,store print quit。store功能存在明显的溢出点:接下来就是利用溢出点,将代码转跳到system方法执行即可。所以接下来的就要通过构造ROP将相对地址打印出来,然后溢出one_gadget.exp如下:from pwn import *from LibcSearcher import *io = remote("220.249.52.133","38178")context.log_level = 'debug.

2020-10-25 18:13:31 959

原创 攻防世界 time_formatter

1 题目2 分析首先,找到漏洞点:通过构造command,我们可以执行系统命令。所以对于ptr,我们希望他是这样的:';/bin/sh;' 这样我们就能通过system方法执行/bin/sh。于是,接下来的工作就是如何让ptr等于我们需要的值。需要注意。ptr,也就是time format,他的输入时有字符检查的:可以看到,我们的“;”不在允许范围内,所以通过输入直接构建ptr是不可能的。这道题目的突破点其实就在退出函数这里:可以看到,退出函...

2020-10-25 17:19:28 549 1

原创 攻防世界 stack2

1.题目2.IDA分析3.分析本地存在明显的数组越界漏洞,选择3修改数据时,没有检查是否越界,直接操作指针进行修改。所以我们只要利用这个漏洞构造system的调用即可(注意,function区的hackhere方法不可用,调用会提示不存在bash。。。)所以这道题目最难在于addr_buf与addr_ret之间的距离。一开始看ida的栈信息,以为是74h,结果溢出失败。这种情况很明显是编译器做了什么处理,所以只能动态调试。在show data方法里面下断点,位置:0x80

2020-10-07 21:05:14 479

原创 攻防世界 welpwn

1.题目2.IDA分析3.流程分析流程很简单,输入buf,这里不存在溢出,然后进入echo方法,将buf复制到s2,当遇到\x00就结束。这个条件会导致p64(addr)后面的内容被截断(地址经p64包装后肯定会出现\0x00)。栈结构如下:也就是说,s2只能复制buf前面32个单元的内容。为了使32位后面的内容得以执行,我们需要在ret位置跳去执行四个pop指令,去掉buf前32位内容(也就是复制到s2里面的这些内容),这样就能连贯执行32位之后的内容了。所以,..

2020-10-07 20:19:52 289 1

原创 攻防世界 Mary_Morton

1.题目2.IDA分析3.流程分析

2020-10-07 18:48:50 276

原创 攻防世界 forgot

1.题目2.IDA分析3.流程分析流程:输入名字,邮箱,邮箱校验完,执行v3+--v14处的代码。v3原本指向sub_8048604的,我们发现sub_80486CC才是我们需要运行的函数。思路:①为了避免v14影响结果,输入字符避免进入case判断。②通过输入邮箱进行栈溢出覆盖v3的内容,使它指向sub_80486CC。exp如下:from pwn import *#io = process('./level2')io = remote('220.249.52...

2020-10-04 10:55:21 1241 3

原创 攻防世界 level2

1.题目2.IDA分析3.流程分析流程很简单,输入信息,输出hello world。read函数也存在明显的溢出点。问题是没有找到现成可用的函数cat flag或者调用system函数。因此,只能我们自己构造。如上图 我们可以获取到system和‘/bin/sh’的地址(注意,/bin/sh在.data段,如果是.rdata段则不能利用,原因还没有找到,可能是因为rdata只读不能执行?知道的读者麻烦评论告知一下~),exp如下:from pwn import...

2020-10-04 10:24:09 411

原创 攻防世界 CGfsb

1.题目2.IDA分析3.流程分析流程很简单, 输入名字和信息,然后打印刚刚输入的信息出来,如果未初始化的pwnme的值为8,则成功cat flag。这里printf直接把&s打印出来,明显存在格式化字符串漏洞。解释一下格式化字符串,一般printf的参数是:格式化字符串 + 参数1 + 参数2 ...。如果后面的参数数量对应不上格式化字符串中需要的参数,会自动从栈顶获取对应的参数。如下图:输入“AAAAAAA%x-%x-%x-%x-%x-%x-%x-%x-%x-%.

2020-10-03 21:01:12 587 2

原创 攻防世界 level3

1.题目2.IDA分析3.流程分析流程很简单,直接输入一串字符,然后结束。从IDA反汇编成C程序代码看,read方法这里存在明显的栈溢出。但这道题的真正难点在于,程序本身没有可用的函数(system函数),也没有可用的函数参数(“/bin/sh”)。也没有更多的输入点给我们利用。但是题目给了我们一个动态库,意思很明显,就是利用动态库的方法和参数。首先,使用 strings -at x libc_32.so.6 | grep bin/sh 查看动态库是否存在我们需要的字...

2020-10-03 19:32:32 2653

原创 攻防世界 cgpwn2

1.题目2.IDA反汇编C程序3.流程分析首先提示输入名字,然后提示输入一段信息,程序就结束了。很简单的流程,gets方法也存在明显的溢出。但是目前为止没有找到我们想要的flag。在方法区看到有pwn方法,点进去一看,额。。没有找到可以直接利用的源程序方法,那就只能自己构造了。可以看到方法区中是有system方法的。所以我们只需要构造它的的参数:“cat flag”.PIE没有开,我们可以直接利用输入名字把参数存进去。下面是expfrom pwn imp...

2020-10-03 16:05:01 370

原创 攻防世界 int_overflow

1.题目2.IDA反汇编C程序3.流程分析首先,选择login或者退出,选择login,则输入名字和密码,然后校验密码长度,长度小于等于3或者大于8等密码错误,否则成功。但是看到这里,会有疑问,成功了之后呢?flag呢?在IDA的function view查找,发现一个函数what_is_this。一个存在于原函数但是我们程序流程里面没有调用过的函数。于是思路立马清晰了。我们需要通过栈溢出来覆盖返回地址,将函数what_is_this的地址覆盖到返回地址上。接..

2020-09-28 15:03:42 724 5

原创 攻防世界 when_did_you_born

1.题目2.IDA反汇编C程序3.程序流程分析首先输入Birth,如果Birth==1926直接退出;否则,输入Name,这时,判断Birth是否==1926.等于则get flag。很明显,输入名字就是专门为我们提供溢出点的。两个变量的位置如下图:0x20 - 0x18 = 0x8也就是说name和birth之间间距8个单元。exp如下from pwn import *#io = process('./when_did_you_born')io = remo

2020-09-28 14:37:48 238

原创 攻防世界 guess_num

1.题目2.Ida反汇编3.根据上图代码,分析基本流程。流程:随机种子生成随机数,对比随机数和输入的数字,连续正确10次就成功。初看好像不可能成功,怎么可能猜对随机数十次?其实srand生成的随机数是伪随机数。其实就是一个很长的数字字符串,然后根据种子定位到这个字符串某个点,然后每次生成随机数就读一个数字字符。也就是说,如果我们的种子是一样的,相同的随机次序我们得到的随机数是一样的。于是,现在的问题变成了我们怎么得到程序的种子?或者我们是否可以修改程序的种子?查看c源码.

2020-09-27 18:55:25 1025

原创 经典的栈溢出漏洞分析

c源码如下:#include<stdio.h>#include<string.h>int main(int argc,char* argv[]){ char buf[256]; strcpy(buf,argv[1]); printf("Input:%s\n",buf); return 0;}系统是Ubuntu20.04,使用gdb-peda调试。1.相关知识首先,我们解释首先,有个预备知识,c程序是通过__libc_start_mai..

2020-09-27 18:32:03 527

原创 会话劫持 Kali

1.工具介绍网络数据包信息收集工具ferret-sidejack网络数据包传递用户的各种操作和对应的信息。但是由于各种数据混在一起,不利于渗透测试人员分析。Kali Linux提供了一款信息搜集工具ferret-sidejack。该工具既可以从网络接口直接读取数据,也可以读取数据抓包文件。该工具会过滤掉大部分格式性数据,只保留更为有价值的数据,如IP地址、Mac地址、主机名、操作类型...

2020-05-05 16:54:04 2185

原创 ARP原理和Kali环境下的ARP攻击实验

目录ARP原理ARP协议ARP之简单请求应答ARP攻击Kali环境下的ARP攻击实验ARP原理ARP协议ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到MAC地址的转换。在计算机间通信的时候,计算机要知道目的计算机是谁(就像我们人交流一样,要知道对方是谁),这中间需要涉及到MAC地址,而MAC是真正的电脑的...

2020-05-04 15:45:04 769

原创 Redis未授权访问漏洞

Redis未授权访问漏洞目录Redis未授权访问漏洞漏洞存在的条件SSH登陆复现最后漏洞存在的条件1.redis绑定0.0.0.0:63792.redis未设置访问密码SSH登陆SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是密钥验证也就是我们想要的免密登录了。密码的认证,使用公钥加密、私钥解密,其中公钥是可以公开的,放在...

2020-05-02 10:10:47 446

转载 SpringMVC @SessionAttributes 使用

@SessionAttributes 只能作用在类上,作用是将指定的Model中的键值对添加至session中,方便在下一次请求中使用。简单示例目标是通过@SessionAttributes 注解将Model中attrName为"user","age","name" 的值添加至 session 中 1 @Controller 2 @RequestMapping("/testSe...

2020-03-19 17:24:21 82

转载 Threadlocal 和 ThreadLocalMap 原理解析

java 中提供了两个线程安全的操作方式,一个是 Threadlocal ,一个是ThreadLocalMap。本文介绍他们的区别和实现原理。ThreadlocalThreadlocal 的属性包括 threadLocalHashCode,getMap(Thread t) 到当前线程去获取一个 ThreadLocalMap 的内部类对象,它的属性有一个 entry 数组,数组下标是当前 Th...

2020-03-16 17:48:13 156

原创 jdk代理和cglib代理的区别、@within和@annotation的区别

java动态代理--利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。(基于接口)cglib动态代理--利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。(基于继承)对比:cglib代理比jdk代理快@within和@annotation的区别:@within 对象级别 @annotation 方法级别...

2018-05-07 18:43:07 3342

原创 Springcloud遇到的坑

使用idea2018,跑一些springcloud的小demo时,会出现一些奇奇怪怪的问题。比如下面的:java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicatError creating bean with name 'eurekaAutoServiceRegistration':出现这些问题的一个原...

2018-05-07 18:36:55 1564

原创 Java 日志和异常的分离统一处理

    如何优雅的将业务逻辑和日志及异常的处理进行解耦。一下是我个人的理解和处理方法。欢迎有更好idea的朋友留言探讨。    将业务逻辑和非业务逻辑的代码进行分离,一个常用的方法就是AOP。废话不多说,直接看代码。    先说日志的处理。首先,定义一个注释类:/** * Author : Nathan.yang * Date : 2017/12/6 * Email : 1372872...

2018-03-11 14:39:38 3410 1

黑客成长经历

讲述易名为大黑客的成长史,绝对对你有帮助!

2013-11-19

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

TA关注的人

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