草庐IT

从零开始入门pwn(二):环境搭建

目录一.前言二.环境搭建一.Linux系统二.pwntools三.pwngdb四.IDA五.大脑&时间三.总结一.前言前几天写了一些关于pwn的介绍以及一些前置知识,其实那些知识都是浅尝辄止就行,重点还得放在后续的做题中,边做边学不香吗,不仅有成就感还能快速熟悉pwn绝对不是因为没时间去专门学。但是之前的前置知识主要还是为了给那些真正没有基础的小白一个相对平滑的入门曲线,对于真正想要入门pwn的同学来说,前置知识其实都已经掌握过了(不会有人真的是没一点计算机基础单纯是看pwn帅就想来入门的吧)。所以,这就马不停蹄给已经有前置知识的同学写一个环境搭建的博客,也是分享一下目前我遇到的题目所用到的工

字符串溢出(pwn溢出)--ret2shellcode

有些技术再也记不住了。所以记录笔记,下面这个文档写的蛮好的,不过我实际情况和他稍有不同,特此记录pwn溢出入门案例,信息安全https://saucer-man.com/information_security/177.html这里面的例子是常见的栈溢出,例子代码就是如上文中的代码,为了测试方便,如上面作者一样,关闭ASLR,关闭PIE,这个操作都一样。ret2shellcode,即控制程序执行shellcode代码。shellcode指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的shell。一般来说,shellcode需要我们自己填充。这其实是另外一种典型的利用方法,即此时

2022柏鹭杯pwn复现

note1个人感觉这个题逆向分析还是稍微有点复杂的,特别是堆块的初始化,建议先写完函数后gdb看一下堆块初始化存放的东西然后结合ida分析会容易理解点。漏洞分析 题目实现了创建,编辑,调用三个功能这里限定了只能申请0和1两个堆块。 功能三主要是一个存放在堆上的一个show功能的函数,可以打印堆块内容  在edit_name函数里有一个free操作,但是并未制空指针,并且namelength也是我们重新输入的,这就给了我们构造堆块重叠修改堆块内容的可能。也正是利用这一点实现libc的泄露以及get shell。expfrompwnimport*context.log_level='debug'r

writeUP-[第五空间2019 决赛]PWN5(待进一步完善待研究内容)

声明:本文用途为供自己学习参考文章一:CSDN-云啾啾啾(作者)-buuctf——[第五空间2019决赛]PWN51参考文章二:CSDN-Mokapeng(作者)-[第五空间2019决赛]PWN5——两种解法参考文章三:CSDN-lifanxin(作者)-CTFpwn题之格式化字符串漏洞详解参考文章四:知乎-看雪(作者)-PWN入门-格式化字符串漏洞参考文章五:简书-杰森任(作者)-PWN格式化字符串漏洞1(基础知识)参考文章七:CSDN-Marx_ICB(作者)-【PWN】格式化字符串漏洞原理参考文章八:CSDN-n19hT(作者)-gdb调试|pwndbg+pwndbg联合使用目录一、思路

[BMZCTF-pwn] 00-pwnpwnpwn

BUUCTF的题作到0解区,既作不出来也找到不wp,放弃了。今天开始上xctfclub.cn上来玩。一般题都是从简单开始,也不一定,一上来就是个盲pwn。远程连接后,输出欢迎信息,然后输入后会回显。思路:如果是堆啥的怎么也得给点,不给就没办法了,至少有个泄露。这里的回显猜是printf的输出用AAAA-%x-%x...测试,可以得到一些有用信息有0804XXXX这个应该是32位nopie#3得到个栈地址指向输入串,不清楚怎么用,#10是输入偏移#39是libc_start_main_ret可以得到libc的加载地址。没有找到退出循环的地址一般32位加载地址0x8047000或0x8048000

[BMZCTF-pwn] 00-pwnpwnpwn

BUUCTF的题作到0解区,既作不出来也找到不wp,放弃了。今天开始上xctfclub.cn上来玩。一般题都是从简单开始,也不一定,一上来就是个盲pwn。远程连接后,输出欢迎信息,然后输入后会回显。思路:如果是堆啥的怎么也得给点,不给就没办法了,至少有个泄露。这里的回显猜是printf的输出用AAAA-%x-%x...测试,可以得到一些有用信息有0804XXXX这个应该是32位nopie#3得到个栈地址指向输入串,不清楚怎么用,#10是输入偏移#39是libc_start_main_ret可以得到libc的加载地址。没有找到退出循环的地址一般32位加载地址0x8047000或0x8048000

CTF PWN之heap入门 unlink

环境ubuntu20+pwndbg+patchelf+glibc-all-in-one为什么要用ubuntu不用kali,这里不做解释,总之就是自己在搭环境时出现了各种问题,但用ubuntu20不会出现,pwndbg,打pwn题必备,具体安装过程见gdb与peda、pwngdb、pwndbg组合安装与使用patchelf则可以实现动态更改二进制文件的glibc连接库版本,glibc-all-in-one,提供了glibc常见版本。patchelf--set-interpreter./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.

CTF PWN之heap入门 unlink

环境ubuntu20+pwndbg+patchelf+glibc-all-in-one为什么要用ubuntu不用kali,这里不做解释,总之就是自己在搭环境时出现了各种问题,但用ubuntu20不会出现,pwndbg,打pwn题必备,具体安装过程见gdb与peda、pwngdb、pwndbg组合安装与使用patchelf则可以实现动态更改二进制文件的glibc连接库版本,glibc-all-in-one,提供了glibc常见版本。patchelf--set-interpreter./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.

ARM pwn 入门 (2)

上一篇文章中笔者对ARM架构的寄存器和指令集做了简单的介绍,本文就来首杀ARMpwn题。buuoj第139题jarvisoj_typo这一题是静态编译的程序,对于ARM可执行文件,在x86架构的虚拟机上可以使用qemu-arm...来执行。我们首先来执行看一下这个程序有什么输出。在程序一开始输出了一段字符串,我们可以在IDA中用Shift+F12来查看elf文件中所有硬编码的字符串:然后根据交叉引用找到该字符串被引用的位置:根据程序的输入,我们可以猜测出其中一部分库函数,如这里的write、getchar等。看上去这是一个正常的输入程序,一个typingtest,如果输入的内容和程序输出相同就

ARM pwn 入门 (2)

上一篇文章中笔者对ARM架构的寄存器和指令集做了简单的介绍,本文就来首杀ARMpwn题。buuoj第139题jarvisoj_typo这一题是静态编译的程序,对于ARM可执行文件,在x86架构的虚拟机上可以使用qemu-arm...来执行。我们首先来执行看一下这个程序有什么输出。在程序一开始输出了一段字符串,我们可以在IDA中用Shift+F12来查看elf文件中所有硬编码的字符串:然后根据交叉引用找到该字符串被引用的位置:根据程序的输入,我们可以猜测出其中一部分库函数,如这里的write、getchar等。看上去这是一个正常的输入程序,一个typingtest,如果输入的内容和程序输出相同就