Pwn
文章平均质量分 66
记录pwn学习过程
==Microsoft==
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Angr学习 04_angr_symbolic_stack
【代码】Angr学习 04_angr_symbolic_stack。原创 2022-10-04 21:28:01 · 491 阅读 · 0 评论 -
Angr学习 03_angr_symbolic_registers
【代码】Angr学习 03_angr_symbolic_registers。原创 2022-10-04 18:44:13 · 350 阅读 · 0 评论 -
Angr学习 02_angr_condication
【代码】Angr学习 02_angr_condication。原创 2022-10-04 17:54:15 · 273 阅读 · 0 评论 -
Angr学习 00_angr_find
angr入门原创 2022-10-04 17:07:51 · 832 阅读 · 0 评论 -
Pwn 学习 fmt_str_level_1_x64 格式化字符串
第四个参数表示写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是byte,即按hn写。fmtstr payload函数返回的就是payload。pwntools工具: fmtstr_payload(offset, writes, numbwritten=0, write_size=‘byte’)第二个参数表示需要利用&n写入的数据, 采用字典形式,格式目标地址:准备修改的值}第三个参数表示已经输出的字符个数, 这里没有, 为0, 采用默认值即可;原创 2022-09-10 13:58:56 · 644 阅读 · 0 评论 -
Pwn 学习 fmt_str_level_1_x86 格式化字符串
【代码】Pwn 学习 fmt_str_level_1_x86 格式化字符串。原创 2022-09-07 22:59:28 · 1455 阅读 · 0 评论 -
Pwn 学习 fmt_test_2_x86 格式化字符串
【代码】Pwn 学习 fmt_test_2_x86 格式化字符串。原创 2022-08-21 17:19:36 · 236 阅读 · 0 评论 -
Pwn 学习 fmt_test_2格式化字符串
Pwn 学习 fmt_test_2格式化字符串。原创 2022-08-21 15:01:39 · 480 阅读 · 0 评论 -
Pwn 学习 格式化字符串
每一种 pattern 的含义请具体参考维基百科的格式化字符串。以下几个 pattern 中的对应选择需要重点关注。可以看到%10p的作用是直接打印第十个%p位置上的指针内容。通过格式化字符串可以无限泄露栈上的数据。原创 2022-08-19 18:47:13 · 1922 阅读 · 5 评论 -
buuctf pwn bjdctf_2020_babyrop
buuctf pwn bjdctf_2020_babyrop1.checksec2.IDA分析ropper3.exp1.checksec运行一下2.IDA分析这里调用了vuln函数我们接着看一下vuln函数buf只有32,但是我们可以写64很明显的溢出本程序没开PIE没开canary再看一下有没有后门函数没有"/bin/sh"没有system()函数那么就要通过泄露函数地址来计算libc的基地址了64位程序在传参的时候需要用到寄存器当参数少于7个时, 参数从左到原创 2022-05-14 10:41:37 · 399 阅读 · 0 评论 -
Pwn 学习 question_5_plus_x64 ret2csu
Pwn 学习 question_5_plus_x64 ret2csu1.源代码2.源代码分析3._libc_csu_init 分析4.ROP编程5.ropper看以下gadget6.exp[点击跳转 libc database search](https://libc.blukat.me/)7.看一下效果所有源代码和程序以及调试程序都放在了gitee1.源代码#include<stdio.h>#include<stdlib.h>#include<unistd.h>原创 2022-05-01 23:13:40 · 569 阅读 · 0 评论 -
Pwn 学习 question_5 x64ROP编程
Pwn 学习 question_5 x64ROP编程1.源代码2.编译x86x643.x863.1.确定溢出量3.2.布栈3.2.1.第一次溢出3.2.2.计算libc_base3.2.3.第二次溢出3.3.exp4.x644.1.确定溢出量4.2.布栈4.2.1.第一次布栈4.2.2.计算偏移4.2.3.第二次布栈4.3.exp1.源代码#include<stdio.h>#include<stdlib.h>#include<unistd.h>int dofun原创 2022-04-30 13:21:44 · 726 阅读 · 0 评论 -
Pwn 学习 plt和got表
目录1.简介plt和gotpltGOT2.保护机制3.执行顺序1.简介plt和gotpltPLT : 程序链接表(PLT,Procedure Link Table)GOTGOT : 全局偏移表(GOT, Global Offset Table)此处不对概念做解释了可以点击查看大佬的介绍在此我以初学者的角度认识plt和got点击跳转点击跳转2.保护机制开启RELRO在前面描述的漏洞攻击中曾多次引入了GOT覆盖方法,GOT覆盖之所以能成功是因为默认编译的应用程序的重定原创 2022-04-24 21:15:47 · 1141 阅读 · 0 评论 -
Pwn question_4_2_x64 ROP编程 以及 ropper初使用
ROP编程原创 2022-04-23 21:41:08 · 1435 阅读 · 0 评论 -
picoctf Pwn buffer overflow 1
picoctf Pwn buffer overflow 11.IDA反编译看一下2.checksec检查3.检查后门函数4.看一下vuln函数5.利用思路6.exp1.IDA反编译看一下2.checksec检查3.检查后门函数4.看一下vuln函数5.利用思路在vuln函数中有一个gets()函数可以溢出将放回地址覆盖成win()函数的地址即可没有canary和pie的保护利用起来非常简单6.expfrom pwn import *p = remote("saturn.pi原创 2022-04-04 13:52:16 · 329 阅读 · 0 评论 -
Pwn python发送不可见字符串——小端序
小端序,ctf,pwn原创 2022-04-04 10:53:05 · 1578 阅读 · 0 评论 -
Pwn题目环境自动部署
Pwn题目环境自动部署1.下载地址2.pwntools_env介绍安装教程使用说明欢迎各路大神指导维护1.下载地址gitee2.pwntools_env介绍自动部署pwn题环境pwntools gdb ROPgadgetgdb插件来自gitee,有效避免github连接不上的问题安装教程git clone https://gitee.com/liweijun0302/pwntools_env.gitcd pwntools_env./pwntools_env.sh使用说明安装原创 2022-03-30 19:58:22 · 567 阅读 · 0 评论 -
部署pwn题目方法
1.安装socatmacosbrew install socatlinux(ubuntu)apt-get install socat2.部署题目使用如下命令socat tcp-l:8877,fork exec:./a.out,reuseaddr8877是自己本机的端口号exec:[要部署的程序的路径]原创 2022-03-16 19:25:54 · 2497 阅读 · 0 评论 -
BUUCTF Pwn pwn2_sctf_2016
BUUCTF Pwn pwn2_sctf_20161.checksec2.IDA32vuln函数漏洞利用3.exp1.checksec没有canary,方便溢出没有PIE,构造ROP会方便很多2.IDA32vuln函数int vuln(){ char nptr[32]; // [esp+1Ch] [ebp-2Ch] BYREF int v2; // [esp+3Ch] [ebp-Ch] printf("How many bytes do you want me to rea原创 2022-03-13 00:33:48 · 528 阅读 · 0 评论 -
攻防世界 Pwn time_formatter
攻防世界 Pwn time_formatter1.checksec分析2.IDA分析menu在 print_your_time 找到有关system函数控制好参数ptr即可拿到权限输入限制UAF利用思路3.exp1.checksec分析2.IDA分析menu puts("Welcome to Mary's Unix Time Formatter!"); do { while ( 2 ) { puts("1) Set a time format.");原创 2022-03-06 18:13:11 · 583 阅读 · 0 评论 -
Pwn学习笔记-持续更新
Pwn学习笔记-持续更新第一节:基本命令第二节:gdb第一节:基本命令命令介绍readelf查看elfnmhexdump查看十六进制stringsldd查看库函数的位置objdump反编译成汇编 objdump [-d] [file] [-M] [intel] 查看intel下的汇编gcc[-S] 直接编译成汇编代码第二节:gdbgdb命令介绍ii r :查看寄存器b下断点d删除断点原创 2022-03-03 00:46:06 · 513 阅读 · 0 评论 -
攻防世界 Pwn secret_file
攻防世界 Pwn secret_file1.checksec检查保护2.运行程序3.IDA分析4.程序逻辑5.exp6.运行结果1.checksec检查保护lwj@ubuntu:~/Desktop/git/ctf-pwn/secret_file$ checksec secret_file[*] '/home/lwj/Desktop/git/ctf-pwn/secret_file/secret_file' Arch: amd64-64-little RELRO: Full原创 2022-02-26 19:57:47 · 401 阅读 · 0 评论 -
攻防世界 Pwn greeting-150
攻防世界 Pwn greeting-1501.checksec检查保护2.IDA查看程序流程3.程序分析4.exp1.checksec检查保护root@ubuntu:~/Desktop/git/ctf-pwn# checksec secret_file[*] '/home/lwj/Desktop/git/ctf-pwn/secret_file' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary fou原创 2022-02-26 18:53:48 · 725 阅读 · 0 评论 -
攻防世界 Pwn int_overflow
攻防世界 Pwn int_overflow1.题目下载地址2.checksec2.IDA分析4.exp1.题目下载地址点击下载2.checksec没有canary没有PIE2.IDA分析在check_passwd函数中有一个strcpy函数当v3>3u且v3<8u进入else。else中把s的值复制到dest,如果s的值够长,就能造出栈溢出。但是3<v3<8限制了s的长度了,怎么办呢?我们可以看一下汇编代码:会发现程序把s放到一个al寄存器中,al是一个八原创 2021-12-25 12:23:26 · 211 阅读 · 0 评论 -
BUUCTF Pwn [第五空间2019 决赛]PWN5
BUUCTF Pwn [第五空间2019 决赛]PWN51.题目下载地址2.checksec2.IDA分析4.exp1.题目下载地址点击下载2.checksec开启了canary没有PIE2.IDA分析查看主函数,函数的功能是读入一个4位的随机密码,再将我们输入的密码与随机生成数比较,相同就执行system这里面的printf()存在格式化字符串漏洞1.利用 "AAAA %08x %08x %8x %08x %08x %08x %08x………… ",这样的字符串来找到我们输入原创 2021-12-25 11:16:48 · 1157 阅读 · 1 评论 -
攻防世界 Pwn welpwn
攻防世界 Pwn welpwn1.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec没有canary没有PIE3.IDA分析main函数中有一个可以输入的地方,但是不能溢出接着往下看在eho函数中,缓冲区至分配了0x10大小,但是传入的buf有0x400字节,因此可以看出存在溢出不过拷贝遇到\x00就停止了,这个时候我们只能注入一个返回地址。但是在ROPgadget里面能找到一个特殊的gadget,它就是破题的关键我们原创 2021-12-25 10:57:54 · 2668 阅读 · 0 评论 -
攻防世界 Pwn forgot
攻防世界 Pwn forgot1.题目下载地址2.checksec3.IDA4.exp1.题目下载地址点击下载2.checksec没有canary,可以随便溢出没有PIE。可以随便使用后门函数3.IDA可以看到有两个溢出点第一处限制了输入大小,我们就不管了第二处是一个简单的溢出只要知道需要覆盖多少byte数据就可以接下来找到了cat flag的后门也就是说只要把后门函数的地址直接跟在溢出数据之后就可以控制程序了4.expfrom pwn import *io = rem原创 2021-12-18 21:54:42 · 218 阅读 · 0 评论 -
攻防世界 Pwn Recho
攻防世界 Pwn Recho1.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec3.IDA分析可以看到这个while是死循环所以要学会使用pwntools的shutdown功能来退出循环但是循环退出之后就不能再进入了接下来要看一下漏洞在哪这个题目有个明显后门,在data段发现有flag。可以将它read到bss段中,再通过write输出出来在gdb动态调试时,分析alarm,发现有有syscall系统调用漏洞利用思路如下:原创 2021-12-18 17:09:39 · 770 阅读 · 0 评论 -
攻防世界 Pwn dice_game
攻防世界 Pwn dice_game1.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec没有canary,可能是简单的栈溢出3.IDA分析在sub_A20()中可以看出v2是一个通过种子生成的 1~6 的 随机数之前有做过类似的题,只要控制种子即可预测随机数在read函数处有栈溢出的漏洞在下面看到需要连续答对50次才可以获取flag那么我们构造的思路就是利用这个溢出点覆盖seed从而预测随机数4.expfrom pwn im原创 2021-12-18 16:00:32 · 466 阅读 · 0 评论 -
攻防世界 Pwn 实时数据监测
攻防世界 Pwn 实时数据监测1.题目下载地址2.checksec3.IDA4.格式化字符串漏洞的解法5.exp1.题目下载地址点击下载2.checksec什么保护都没开,估计是很简单的题进IDA分析一下3.IDAint locker(){ int result; // eax char s[520]; // [esp+0h] [ebp-208h] BYREF fgets(s, 512, stdin); imagemagic(s); if ( key == 35795原创 2021-12-12 15:35:02 · 708 阅读 · 3 评论 -
攻防世界 Pwn supermarket
攻防世界 Pwn supermarket1.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec3.IDA分析这里出现漏洞我们需要先了解reallocrealloc原型是extern void *realloc(void *mem_address, unsigned int newsize);先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照原创 2021-12-12 15:13:15 · 264 阅读 · 0 评论 -
攻防世界 Pwn 反应釜开关控制
攻防世界 Pwn 反应釜开关控制1.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec只开启了NX,并且是64位程序3.IDA分析看到一个gets函数,并且没有边界限制存在溢出可以利用再往下看其他的函数虽然题目给了很多函数,但是没开canary,没开PIE没有什么难度,直接ret到后门函数即可.text:00000000004005F6 public shell.text:0000000000原创 2021-12-12 14:55:18 · 526 阅读 · 0 评论 -
攻防世界 Pwn pwn-100
攻防世界 Pwn pwn-1001.题目下载地址2.checksec3.IDA分析4.exp1.题目下载地址点击下载2.checksec64位程序,目前还什么都看不出看来,直接拉近IDA看看3.IDA分析整个程序由3个嵌套的程序组成我们可以看到sub_40063D是主要的程序,接受单个字符并存储到传入的参数a1所指向的空间之内同时分析sub_40068E发现sub_40063D中a1就是sub_40068E中的v1并且v1的栈空间大小就只有0x40,而sub_4006原创 2021-12-12 14:36:53 · 775 阅读 · 0 评论 -
攻防世界 Pwn cgpwn2
攻防世界 Pwn cgpwn21.题目下载地址2.checksec分析3.IDA分析3.1.看一下溢出大小4.exp4.1.运行结果1.题目下载地址点击下载2.checksec分析只开启了NX保护,应该不会有太多障碍直接进IDA看一下3.IDA分析main函数中有一个hello函数,我们直接看hello函数可以看到第二个gets函数没有限制输入大小,很明显是栈溢出再看看有没有其他后门函数看到有一个pwn函数中调用了system而且第一个gets函数输入的name正好是处于bs原创 2021-12-12 11:37:34 · 731 阅读 · 0 评论 -
BUUCTF Pwn ciscn_2019_n_8 1
ciscn_2019_n_8 11.题目下载地址2.checksec检查保护3.IDA分析4.exp1.题目下载地址点击下载题目2.checksec检查保护所有保护全开,现在也不知道有什么办法试着运行一下,可能又是canary绕过3.IDA分析 init(); puts("What's your name?"); __isoc99_scanf("%s", var, v4, v5); if ( *(_QWORD *)&var[13] ) { if ( *(_原创 2021-12-05 18:21:45 · 1380 阅读 · 5 评论 -
BUUCTF Pwn pwn1_sctf_2016
BUUCTF Pwn pwn1_sctf_20161.题目下载地址2.checksec检查保护3.IDA分析4.看一下栈大小5.找到后门函数地址6.exp1.题目下载地址点击下载题目2.checksec检查保护运行一下看看3.IDA分析看一下伪代码int vuln(){ const char *v0; // eax char s[32]; // [esp+1Ch] [ebp-3Ch] BYREF char v3[4]; // [esp+3Ch] [ebp-1Ch] BYREF原创 2021-12-05 18:02:19 · 1515 阅读 · 0 评论 -
BUUCTF Pwn warmup
BUUCTF Pwn warmup1.题目下载地址2.checksec检查保护3.IDA静态分析4.exp1.题目下载地址点击下载题目2.checksec检查保护啥都没开,果然是warmup3.IDA静态分析__int64 __fastcall main(int a1, char **a2, char **a3){ char s[64]; // [rsp+0h] [rbp-80h] BYREF char v5[64]; // [rsp+40h] [rbp-40h] BYREF原创 2021-12-05 17:26:50 · 343 阅读 · 0 评论 -
CTFSHOW 签到题
CTFSHOW 萌新赛 签到题1.题目下载地址2. checksec检查保护3.IDA分析4.构造ROP链4.exp1.题目下载地址点击下载题目2. checksec检查保护堆不可执行3.IDA分析看到了gets()函数,很明显存在溢出需要知道64位系统和32位系统的区别64 位系统传参从第一个到第六个依次保存在rdi,rsi,rdx,rcx,r8,r9从第7个参数开始,接下来的所有参数都才通过栈传递4.构造ROP链我们需要找到合适的 gadgets,利用 ROPgadgeta原创 2021-12-05 17:08:44 · 1367 阅读 · 0 评论 -
攻防世界 Pwn Mary_Morton
攻防世界 Pwn Mary_Morton1.题目下载地址2.checksec看一下保护3.IDA分析3.1.main函数3.2. sub_400960()3.3. sub_4008EB()3.4.4.gdb动态调试4.1.计算溢出量5.exp1.题目下载地址点击下载题目2.checksec看一下保护开启了canary,没开PIE大概率有后门函数,应该不是很难的题3.IDA分析3.1.main函数 puts("Welcome to the battle ! "); puts("[Great原创 2021-12-05 14:08:54 · 1113 阅读 · 0 评论 -
攻防世界 Pwn CGfsb
攻防世界pwn CGfsb1.先看保护机制2.看一下源代码有什么漏洞3.看一下格式化字符串溢出长度4.看一下pwnme的地址5.exp1.先看保护机制2.看一下源代码有什么漏洞这里很明显是格式化字符串看到这里发现程序需要pwnme==8才可以拿到flag3.看一下格式化字符串溢出长度输入数据后gdb调试数一下offset=104.看一下pwnme的地址那思路就是利用格式化字符串的%n写个8到pwnme中就好了5.expfrom pwn import *#a=process(原创 2021-11-28 19:33:51 · 281 阅读 · 0 评论
分享