CCTF-PWN1&&PWN3】的更多相关文章

这次算是跟着师傅们全程打完了CCTF的线上赛,一些强队的WriteUp也放了出来.这篇文章主要是想跟着大牛的思路把那些题重新再过一遍. PWN3 这个是格式化字符串漏洞的题.printf的格式化串直接来自用户输入. 操作流程 用格式化字符串"%7$x"泄漏libc的地址.(由调试知这个地址已在栈中) 用泄漏出来的地址找出libc的版本 用得到的版本推算出system()函数的偏移 用格式化字符串修改got表的一个为system函数地址 调用被修改的函数 system()的参数"…
CCTF-PWN1&&PWN3 PWN1比较有意思,在得到输入的数据后使用shutdown将标准输入,标准输出和标准错误关闭了读写功能的读.也就是不能进行交互了,要保证一次输入就能拿到flag.后来听joker师傅说可以用dl-resolve来做,有时间了准备试试. 题目可以进行信息泄露,所以我就单独写了一个信息泄露的脚步泄露出got里的函数地址,拿到这些函数地址后,在libc database里找到了libc哦!!我的思路是利用open,read,write函数打开flag文件,读到内存…
0x00: 之前打了CCTF,在CCTF的过程中遇到一个比较有意思的思路,记录一下. 0x01: 可以看到,这是一个 fmt 的漏洞,不过很简单,接收的输入都在stack中,可以确定输入在栈中的位置,可以做到 任意地址读写. 一般来说,对于这种类型的漏洞,写shellcode到合适的地址然后跳转过去,或者leak 出 system地址,改其他函数的got,都是可以拿一个shell的. 本来,我的思路很窄,想的是构造一个循环,去leak我需要的函数,然后改got去拿shell. 之后joker师傅…
问题描述 ​ 环境:VMware Fusion + kali-linux-2018.1-amd64.iso ​ 问题:在Terminal利用./pwn1执行pwn1会出现 bash: ./pwn1:没有那个文件或目录的提示,但是ls命令又能看到存在pwn1文件.(下图中20154312为pwn1的一个副本) 问题解决 ​ 具体的问题分析过程我会附录在解决方案的后面,这里先把解决方案放出来. 一.修改更新源sources.list ​ 1.切换到root用户(大家如果按部就班地安装的话都是root…
攻防世界 -- pwn1 攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了. 题目流程 拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞.在gdb中检查题目的保护. 解题思路 程序没有开PIE,但是有Canary,所以首先要infoleak,泄露出Canary.泄露出Canary之后,可以通过ret2Onegadget的方法来getshell,这样的话,还要泄露出一个函数地址,泄露出函数地址之后,通过偏移来计算出libc的基地址,然后计算出On…
[BUUCTF]PWN3--warmup_csaw_2016 题目网址:https://buuoj.cn/challenges#warmup_csaw_2016 步骤: 例行检查,64位,没有开启任何保护 nc一下,看看输入点的字符串,看到回显了一个地址,之后让我们输入,输入完之后就退出了 用64位ida打开附件,首先shift+f12查看程序里的字符串,可以看到有一个"cat flag.txt"字符串引人注目 双击字符串跟进,ctrl+x查看哪个函数调用了这个字符串,找到函数后按f5…
给学弟们练手的题目,做的过程中接触一些基本概念 #include <stdio.h> #include <unistd.h> int main() { ]; welcome(); printf("enter your name\n"); read(STDIN_FILENO, name, ); name[] = '\x00'; get_contents(); } void welcome() { printf("welcome to play the g…
给学弟们练手的题目,做的过程中接触一些基本概念 #include <stdio.h> #include <unistd.h> int main() { ]; welcome(); printf("enter your name\n"); read(STDIN_FILENO, name, ); name[] = '\x00'; get_contents(); } void welcome() { printf("welcome to play the g…
目录 程序基本信息 程序溢出点 确定返回地址 编写exp脚本 成功getshell 程序基本信息 我们可以看到这是一个64程序,没有保护开启. 程序溢出点 gets函数可以读取无限字符,存在栈溢出. 接下来我们测测需要多少字符长度可以溢出. 我们可以直接从ida上看到 变量s在栈上[bp-Fh]位置,也就是说我们只能输入(Fh + 8)(覆盖rbp需要8个字节)的字节就能覆盖到栈底rbp,紧跟栈底的便是返回地址,我们可以接上一个我们想要程序跳转到的地址. 当然ida显示大部分情况下栈偏移都是没问…
[BUUCTF]PWN1-test_your_nc 题目网址:https://buuoj.cn/challenges#test_your_nc 步骤: 根据题目提示,nc一下靶场 2.nc连接上后ls一下看看当前目录,看到了flag的,直接cat flag读出内容…