- 博客(28)
- 收藏
- 关注
原创 [CVE-2021-44228]:log4j2漏洞复现流程详解(vulhub环境)
Apache Log4j2是Apache软件基金会下的一个开源的基于java的日志记录工具。该远程代码执行漏洞基于攻击者使用${}关键标识触发JNDI注入漏洞,可以执行任意代码。
2024-04-23 16:52:49 444 3
原创 BUUCTF之off by one漏洞
BUUCTF npuctf_2020_easyheap首先分析一下这个程序,PIE关闭,说明可以修改got表大概看一下程序的执行机制堆题常见菜单结构def add(size,content): p.sendlineafter('Your choice :',str(1)) p.sendlineafter('Size of Heap(0x10 or 0x20 only) : ',str(size)) p.sendlineafter('Content:',content)def edit(
2021-05-21 09:50:29 509
原创 BUUCTF-UAF漏洞 pwnable_hacknote
BUUCTF-UAF漏洞 pwnable_hacknote好久不学习pwn了,今天学习突然就开窍了,开心,好像离大神又近了一步就不静态分析了,直接动态分析首先创建两个大小为0x80的堆快,结构如图所示,可以看到每个堆块包含了两个部分然后我们释放这两个堆块,可以看到被存放进了fastbin中之后我们创建一个payload,0x8个大小的,from pwn import *from LibcSearcher import *def add(size, content): print(
2021-05-21 08:57:42 545
原创 BUUCTF pwnable_orw
BUUCTF pwnable_orw好久不更新博客了,在不更新显得好像自己真的瘦到95斤了似的,上题!1)还是一如既往地check一下,可以看到程序开启了canary防护,其他的防护并未开启2)运行一下这个程序,大概了解一下它的运行效果3)分析这个函数,发现调用了两次prctl,这里决定了程序只能调用open,read,write函数,那我们就必须利用有限的条件来执行,这里有两种写法①手动添加汇编代码进行构造#!/usr/bin/python2#coding=utf-8from pwn
2021-05-10 20:46:20 400
原创 BUUCTF ez_pz_hackover_2016[动态调试之初入门]
BUUCTF ez_pz_hackover_2016[动态调试之初入门]之前做题基本上都是放到IDA里面进行分析,所以在动态调试这方面一直有所欠缺,今天这道题就弥补了这个不足,真正地走进了栈题的动态调试先check一下,发现什么保护都没有开,还是一个32位的程序,心里不免有些小激动,难道这题简单?不管简单与否,我们都先运行一下,发现在输入之前回显给我们一个栈地址,并且这个地址不是固定的,所以这里一定会用到,拿小本本记下来,之后程序会将我们输入的东西打印出来之后我们进到IDA来分析一下这个程序
2021-01-26 10:31:01 574
原创 BUUCTF [OGeek2019]babyrop
BUUCTF [OGeek2019]babyrop首先我们还是check一下对我们输入的值和随机数进行比较,这里我们需要知道strlen这个函数识别尾部的方式是\x00,所以这里我们可以通过在输入的一开始就加上’\x00’来绕过,这样v1就等于0了,就满足了这个条件再找一下之后我们发现了可以执行libc的位置,这里的buf距离栈底有0xe7,但是通过read可以读到a1个字节(这个a1就是函数0x80487ef的返回值),所以只要我们输入一个特别大的值就可以进行溢出 ,剩下的就是常规操作ret
2021-01-21 09:18:04 263
原创 BUUCTF axb_2019_fmt32(格式化字符串漏洞)
BUUCTF axb_2019_fmt32(格式化字符串漏洞)我们还是先check一下,发现RELRO是关闭的,那么好,可以修改GOT表了显而易见这是一个格式化字符串漏洞 ,接下来我们来测试一下偏移量这里可以看到我们输入了5个a它的ASCII码是61,但是往后进行查看只有四个61,所以我们在之后的构造中就再补上一个字符就对齐了,我们算一下它的偏移量是8,所以只要输入%7$p就可以了。我们就可以利用这个和格式化字符串来泄露出一个函数的地址,来获取libc版本,就能获得system函数的地址了。
2021-01-07 14:46:58 1275
原创 BUUCTF ciscn_2019_c_1(ret2libc)
BUUCTF ciscn_2019_c_1(ret2libc)首先还是check一下,之后放到IDA里面进行分析可以看到里面有一个encrypt函数,我们来对他进行一个分析,可以看到一个关键点做法一:我们可以得出只要输入东西了,这个IF判断就是成立的,所以我们这里需要了解一个知识:在输入的内容前面加入’\0’可以绕过strlen这个函数在这个函数里我们也可以很快找到溢出的地方,gets函数,对于我们输入的内容长度没有限制,再看上面定义变量的时候,s距离栈底的长度为0x50,纵观函数内容我们
2021-01-04 17:56:08 448
原创 Web工具HTTrack
Web安全工具HTTrack(侦察兵)HTTrack介绍以递归的方式真实爬取网站,减少了与系统之间的交互,便于多次进行网站的分析。只需在浏览器中打开“镜像”网站的页面,即可从链接到链接浏览网站,就像在线查看网站一样。安装方法 apt-get install httrack使用方法首先在本地创建一个文件夹mkdir baidu然后启动HTTrack这里让我们给项目命名,此处我们命名为baidu这里是让我们输入保存到的目录Base path (return=/root/we
2020-12-30 17:38:21 616
原创 有趣的爬虫
有趣的python1.今天新学到的,实现的功能是通过语音的方式播报天气,自己写的,如有不足还请多多指正import requests from lxml import etreeimport pyttsx3from xpinyin import Pinyinheaders={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.
2020-12-28 17:50:44 332 2
原创 BUUCTF hitcontraining_magicheap[堆]
BUUCTF hitcontraining_magicheap[堆](Unsorted bin attack)我们先来学习一下什么是Unsorted binattack用ctfwiki里面的例子来进行解释:Unsorted Bin Attack,顾名思义,该攻击与 Glibc 堆管理中的的 Unsorted Bin 的机制紧密相关。Unsorted Bin Attack 被利用的前提是控制 Unsorted Bin Chunk 的 bk 指针。Unsorted Bin Attack 可以达到的效
2020-12-28 15:41:46 410 1
原创 BUUCTF [ZJCTF 2019]EasyHeap 记第一次堆入门
BUUCTF [ZJCTF 2019]EasyHeap 记第一次堆入门一般的堆题都是这种表单形式的
2020-12-27 17:18:39 686 2
原创 BUUCTF cmcc_simplerop
BUUCTF cmcc_simplerop庆祝自己放假,做一道题哈哈哈哈哈哈哈首先还是check一下main函数结构,可以看到输入点为read(),也可以观察到它距离栈底0x14gdb调试一下距离eip的距离为32,这里注意,和刚才IDA里面的距离并不一致之后我的想法是通过构造调用系统指令执行 execve("\bin\sh",0,0)因为程序中没有"/bin/sh"字符串,所以我们需要通过程序中已有的read函数读入我们写入的/bin/sh,然后执行指令以下是exp:from p
2020-12-22 19:38:55 250 2
原创 buuctf bjdctf_2020_babyrop2做题笔记 格式化字符串漏洞
buuctf bjdctf_2020_babyrop2做题笔记from pwn import *from LibcSearcher import *proc_name = '/home/pwn/Desktop/bjdctf_2020_babyrop2'p = remote('node3.buuoj.cn', 27642)elf = ELF(proc_name)puts_plt=elf.plt['puts']puts_got=elf.got['puts']main=elf.sym['main'
2020-12-10 20:25:33 264
原创 buuctf ciscn_2019_es_2 栈迁移(二)
buuctf ciscn_2019_es_2 栈迁移(二)相关的方法和步骤在后面注明from pwn import *proc_name = '/home/pwn/Desktop/ciscn_2019_es_2'p = remote('node3.buuoj.cn', 27732)elf = ELF(proc_name)system_plt = elf.plt['system']main_addr = elf.sym['main']leave_ret = 0x80484b8 log.in
2020-12-10 19:07:03 323 2
原创 buuctf actf_2019_babystack
buuctf actf_2019_babystackfrom pwn import *from LibcSearcher import LibcSearcherr = remote("node3.buuoj.cn",27848)elf = ELF("/home/pwn/Desktop/ACTF_2019_babystack")nbytes_length = 0xE0offset = 0xD0leave_retn = 0x00400A4E puts_got = elf.got["puts"]
2020-12-07 21:12:50 556 1
原创 buuctf wustctf2020_closed stdout
buuctf wustctf2020_closed stdout一开始还是check一下ida分析发现vuln函数,根据经验觉得这个是漏洞函数,双击进入,发现调用了两次close()函数可以发现关掉了标准输出和错误输出,最后调用了一个shell函数可以看到这里为后门今天这里新涉及到一个知识点,因为1和2文件描述符不可用了,所以对stdout重定向,将文件描述符 1 重定向到文件描述符 0 : exec 1>&0成功getshell...
2020-12-07 09:59:23 450
原创 buuctf pwn [HarekazeCTF2019]baby_rop2
buuctf pwn [HarekazeCTF2019]baby_rop2 ret2libc老样子还是先check一下,发现开启了NX,说明我们不能利用ret2shellcode了,将文件放到IDA里面来分析一下题目中有%s字符的字样,我们就想到了利用格式化字符串来泄露某个函数的真实地址,来找到libc的版本,最后拼接出一个system("/bin/sh")来获取shell,通过上图我们找到了溢出点在read函数,buf距离栈底的高度为0x20因为这是一个64位的程序,其参数是通过寄存器来传递的,
2020-12-03 16:29:01 495
原创 buuctf ciscn_2019_n_5 ret2shellcode解题思路
BUUCTF ciscn_2019_n_5 ret2shellcodecheck一下,最喜欢的一片红色,64位的程序发现存在两次输入,那么我们就通过read将构造的shellcode写在栈上,然后在第二次的时候通过构造溢出覆盖返回地址跳转到我们写入shellcode的这个地方,然后就开始构造吧:from pwn import *p=remote('node3.buuoj.cn',25157)sh="\x48\x31\xff\x48\x31\xc0\xb0\x69\x0f\x05\x48\x31
2020-12-02 21:04:59 447
原创 BUUCTF [SWPUCTF 2018]SimplePHP
BUUCTF [SWPUCTF 2018]SimplePHP打开题目我们很明显的看到了上传文件的板块和查看文件的板块,选择这个上传文件,显示如图我们再选择查看文件的板块,url如图所示我们在’='后面输入我们想要查看的文件,发现直接就给打印出来了,之后我们根据这个查看了几个php文件,得到了如下内容:file.php:<?php header("content-type:text/html;charset=utf-8"); include 'function.php'; inc
2020-12-01 21:06:30 1236
原创 buuctf wustctf2020_getshell_2 ret2shellcode
BUUCTF wustctf2020_getshell_2check一下,32位的程序且没有开任何保护用ida打开,vuln很明显这是一个漏洞函数,f5查看一下伪代码,可以看到buf距离栈底0x18个字节这是shell函数的伪代码,我们可以看到虽然这个并不是我们想要的shell(不是/bin/sh),但是程序里面有sh的字符串可以供我们利用,那我们现在就查找一下"sh"所在的位置$ ROPgadget --binary '/home/pwn/Desktop/wustctf2020_getshe
2020-12-01 19:49:41 700 1
原创 PWN 栈迁移入门解说 [Black Watch 入群题]PWN
PWN之栈迁移解说适用情况:1.栈溢出的长度不足以让我们把ROP写进去2.程序开启了栈的不可执行保护基础知识:我们栈迁移的目的就是将我们在栈上不可执行的链子转移到data段或者bss段上面 ,这里就需要用到leave;ret了,在这一类的题型中我们是构造并使用两次leave,来将ebp转移到我们构造的后门的起始位置。寻找leave;ret需要用到ROPgadget这个工具$ ROPgadget --binary '/home/pwn/Desktop/bbys_tu_2016' --only
2020-11-30 19:51:47 694 1
原创 BUUCTF [NCTF2019]babyRSA解题思路
BUUCTF [NCTF2019]babyRSA这是一道RSA的题目,前几天看祥云杯的RSA做到自闭,做点简单的题转换一下心情。下载文件之后是一个压缩包,里面有一个py文件,题目如下:from Crypto.Util.number import *from flag import flagdef nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 return np
2020-11-29 20:25:29 2709
原创 bbys_tu_2016(ret2text)
BUUCTF bbys_tu_2016(ret2text)毫无疑问地check一下运行一下,发现并没有给我们什么有用的信息,这是第一次尝试用gdb-peda来做题,附上gdb-peda的安装方式:$ git clone https://github.com/longld/peda.git ~/peda$ echo "source ~/peda/peda.py" >> ~/.gdbinit 那我们来调试一下吧这里我在main函数的地方(ida里面找到的)下了一个断点,如果你想调
2020-11-29 19:21:30 1020 1
原创 计算机网络复习相关知识点宝典 课后习题答案
这学期计算机网络的课没怎么好好听,现在只能自己学习了,做个笔记当做复习资料,参考的是计算机网络原理创新教程这本书的课后题(序号即为题号),部分计算题在文章里面添加了解题的思路或者公式第一章(序论)1.计算机网络性能指标速率、带宽、吞吐量、时延(发送时延、传播时延、处理时延、排队时延)、时延带宽积、往返时间RTT、利用率发送时延=数据帧长度(bit)/发送速率(bit/s)传播时延=信道长度(m)/电磁波在信道上大的传播速率(m/s)利用率 D=D0/(1-U)2.收发两端的传输距离为10.
2020-11-28 21:25:18 13052 9
原创 BUUCTF hgame2018_flag_server
BUUCTF hgame2018_flag_server下载附件之后永远都是先check一下紧接着我们将其拖入IDA中查看一下:int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // eax@13 int result; // eax@20 int v5; // ecx@20 int v6; // [sp+8h] [bp-60h]@6 int v7; // [sp
2020-11-28 17:46:01 458
原创 BUUCTF pwnable_start心路历程
记第一篇pwn的做题心路历程pwnable_start我们把题目下载下来,在ubuntu里面进行一下检查,checksec+文件路径看起来是一道非常其简单的题,接下来放到IDA里面查看一下:我们来分段进行分析,首先 系统执行了如下命令:程序push了一个esp,push了一个exit(退出程序)紧接着执行了如下指令,这里说明一下xor eax,eax的值等于0,在这里程序将这四个寄存器的值都清空为0了这里push了共计为20(0x14)个字节,至于具体是什么我也不知道这里我们可以
2020-11-28 12:56:32 4218 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人