
pwn学习
文章平均质量分 90
Casuall
Don't be a script kiddie!
一些笔记
https://smile-zjk.gitbook.io/ctf_notes/
展开
-
攻防世界 Mary_Morto WP 三种解法
Mary_Morto保护措施简介解题思路方法一:方法二:方法三:来自于ASIS-CTF-Finals-2017的一道题,网上的wp都千篇一律,这里记录一下我的一些思路。首先这道题可以从好几种方向去解,我这里介绍三种解法。首先我们查看一下程序的保护措施,发现开启了Stack Canary和NX,RELRO和PIE没有开启。然后运行一下,提示选择我们的武器,第一个是栈溢出漏洞,第二个是格式化字符串漏洞,说明本题应该可以利用这个两个漏洞去解决问题。保护措施简介我们先简单的回顾一下这些保护措施是做什么用原创 2020-08-16 14:07:59 · 1688 阅读 · 4 评论 -
攻防世界xctf-实时数据监测 wp
本题是一个简单的格式化字符串漏洞的利用。先查看一些文件的信息,32位的程序,保护措施没有开。用IDA查看一些伪代码,发现main函数里面只有一个locker函数,locker函数首先接受了一个字符串s,然后调用imagemagic函数,这个函数跟进去查看其实就是一个printf函数,最后比较key的值是不是为0x2223322,如果相等,返回shell,否则打印key的地址和值。我们在本地运行一下看看,由于直接把key的地址告诉你了,所以本题的思路是找到格式化字符串地址的偏移,然后覆盖key的值。格原创 2020-08-14 12:47:30 · 1363 阅读 · 0 评论 -
exploit-exercises Protostar Heap Walkthrough
HeapProtostar Heap0AboutSource codeProtostar heap1AboutSource codeexpProtostar heap2AboutSource codeProtostar Heap3AboutSource codeexp题目来源exploit-exercisesProtostar Heap0AboutThis level introduces heap overflows and how they can influence code flow.Th原创 2020-08-09 17:23:01 · 908 阅读 · 0 评论 -
exploit-exercises Protostar Stack Walkthrough
做了一组关于栈溢出的练习,题目来源exploit-exercises,提供一个虚拟机镜像,可以下载下来自己耍耍。StackStack0AboutSource codeEXPStack1AboutSource codeEXPStack2AboutSource codeEXPStack3AboutSource codeEXPStack4AboutSource codeEXPStack5AboutSource codeStack6AboutSource codeStack7AboutSource codeexp原创 2020-08-03 22:11:55 · 1144 阅读 · 1 评论 -
攻防世界 string WP
检查文件类型(file命令),检查安全措施(checksec命令)就不多说了,只有PIE没有开。首先查看一下main函数,有一个sub_400996函数,这个函数就是负责打印一些信息。然后通过malloc申请了8个字节大小的内存,返回的指针为v3,将v3的值(指针的值为地址)存入v4,实际上v3和v4都指向了刚才申请的那块内存。然后赋值,将前四个字节赋值为68,后四个字节赋值为85。后面通过printf打印了v4和v4+4的值,其实就是68和85的地址。下面有个sub_400D72(v4)函数,将v4原创 2020-07-28 16:55:35 · 1326 阅读 · 1 评论 -
pwnable.kr-cmd1 WP
首先看一下源码:#include <stdio.h>#include <string.h>int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; r...原创 2019-05-29 21:53:44 · 254 阅读 · 0 评论 -
pwnable.kr-cmd2 WP
这道题的ssh密码是上一道题的flag,“mommy now I get what PATH environment is for原创 2019-06-04 21:46:52 · 287 阅读 · 0 评论 -
pwnable.kr-uaf WP
UAF(Use After Free)释放后重用,其实是一种指针未置空造成的漏洞。首先介绍一下迷途指针的概念在计算机编程领域中,迷途指针,或称悬空指针、野指针,指的是不指向任何合法的对象的指针。当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称迷途指针。若操作系统将这部分已经释放的内存重新分配给另外一个进程,而原来的程序重...原创 2019-06-22 21:24:25 · 558 阅读 · 0 评论 -
Bugku-pwn4详解
这道题来自bugku的第三道pwn题,pwn4。首先进行一些常规检查。一个64位动态链接的程序,没有开什么保护。然后用IDA打开,有个危险函数read,可以用来溢出。shift + F12查看有没有可疑字符串,然后在字符串上按x查看引用他的地方,找到了一个system函数但是system函数里面的字符串并不是我们想要的'/bin/sh',尝试用ROPgadget去搜索,命令为ROPg...原创 2019-07-14 10:59:54 · 4544 阅读 · 10 评论 -
BugKu - pwn2
这道题来自于bugku旧平台的第二道pwn题,还是比较简单的,一个典型的缓冲区溢出题。首先查看一下文件类型,file pwn2,可以看到是64位的程序。然后用64位IDA打开,查看程序的逻辑。可以看到这个程序的逻辑比较简单,有一个read函数,这个函数一个危险函数,可能引发缓冲区溢出漏洞。常见的危险函数还有gets、strcpy、sprintf、scanf等。然后查看字符串,看看是否有内置...原创 2019-07-06 09:59:57 · 3773 阅读 · 0 评论 -
pwntools的简单使用
pwntools是一个CTF框架和漏洞利用开发库,用Python开发,旨在让使用者简单快速的编写exploit。这里简单的介绍一下pwntools的使用。首先就是导入包from pwn import *你将在全局空间里引用pwntools的所有函数。现在可以用一些简单函数进行汇编,反汇编,pack,unpack等等操作。将包导入后,我一般都会设置日志记录级别,方便出现问题的时候排查错误...原创 2019-09-20 16:54:48 · 9037 阅读 · 5 评论 -
pwnable.kr-lotto WP
源码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>unsigned char submit[6];void play(){ int i; printf("Submit your 6 lotto bytes : "); ...原创 2019-05-26 11:09:06 · 268 阅读 · 0 评论 -
pwnable.kr coin1 WP
首先看一下题目题目的意思是让你玩一个游戏,给你一些金币,其中有一个假币,这个假币外表和真的金币一样,但是重量不同,真的金币重量为10,假币重量为9。你需要帮他找到100枚假币才能过关。游戏规矩如下:给你N枚硬币和C次机会选择硬币的序号,称重你获得硬币的重量第二步和第三步重复C次,然后你给出正确答案(也就是哪一枚是假币)下面给出了一个列子,比如给你4枚硬币,2次机会,你第一次选择...原创 2019-05-12 21:54:02 · 386 阅读 · 0 评论 -
pwnable.kr-bof WP
pwnable.kr-bof 这道题是一个简单的缓冲器溢出的题,首先要做这道题要对函数调用栈有一定的了解。函数调用栈是指程序运行时内存一段连续的区域,用来保存函数运行时的状态信息,包括函数参数与局部变量等。称之为“栈”是因为发生函数调用时,调用函数(caller)的状态被保存在栈内,被调用函数(callee)的状态被压入调用栈的栈顶;在函数调用结束时,栈顶的函数(callee)状态被弹出,栈...原创 2019-03-24 21:59:59 · 5612 阅读 · 8 评论 -
pwnable.kr-random
pwnable.kr-random这个是(https://pwnable.kr)中第6个题,比较简单。ssh连接后,直接运行里面可执行文件random,随便输入几个数,提示你应该尝试2的32次幂,直接看源码吧。int main(){ unsigned int random; random = rand(); // random value! ...原创 2019-03-21 21:17:53 · 412 阅读 · 0 评论 -
pwnable.kr-passcode WP
首先用ssh连进去,一个可执行文件,一个源码文件,一个flag文件,先执行passcode程序,让你输入name,passcode1,passcode2,如图。我们先用scp命令把文件拷贝下来,scp -P2222 passcode@pwnable.kr:passcode . ,注意后面有一个点,表示拷贝到当前目录的意思。然后看一下源码#include <stdio.h>#in...原创 2019-03-30 07:53:51 · 519 阅读 · 0 评论 -
pwnable.kr-flag WP
将文件下载下来,用file命令查看一下,是一个64位可执行文件用64位的IDA打开,发现里面的函数少的可怜,疑似加壳了放到查壳工具里看一下,发现是UPX的壳,这里用linux下的命令xxd flag | tail(xxd的作用就是将一个文件以十六进制的形式显示出来,tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上...原创 2019-03-26 21:52:30 · 434 阅读 · 0 评论 -
pwnable.kr-input WP
首先连进去运行一下查看一下源码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>int main(int argc, char* argv[], char* envp[]...原创 2019-04-17 11:25:22 · 384 阅读 · 0 评论 -
pwnable.kr-mistake WP
这道题比较简单,题目已经给你提示了,题目给的提示是运算符的优先级源码如下#include <stdio.h>#include <fcntl.h>#define PW_LEN 10#define XORKEY 1void xor(char* s, int len){ int i; for(i=0; i<len; i++)...原创 2019-05-01 17:04:14 · 382 阅读 · 0 评论 -
pwnable.kr-leg WP
首先看一下源码#include <stdio.h>#include <fcntl.h>int key1(){ asm("mov r3, pc\n");}int key2(){ asm( "push {r6}\n" "add r6, pc, $1\n" "bx r6\n" ".code 16\n" "mov r3, pc\n" "add r3, ...原创 2019-04-24 09:50:42 · 410 阅读 · 0 评论 -
pwnable.kr-shellshock WP
这道题涉及的知识点是shellshock(也叫破壳漏洞)CVE-2014-6271,GNU Bash 版本小于等于4.3可能存在这个漏洞。首先查看一下有什么文件发现目录里有一个可执行文件bash,我们来查看一下bash的版本可以看到这个路径中的bash版本低于4.3,下面来测试一下这两个版本的bash是否存在破壳漏洞env x='() { :;}; echo shellshocked' ...原创 2019-05-08 10:34:08 · 365 阅读 · 0 评论 -
攻防世界 CGfsb-格式化字符串漏洞
引用维基百科https://ctf-wiki.github.io/ctf-wiki/pwn/linux/fmtstr/fmtstr_intro/格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式。几乎所有的 C/C++ 程序都会利用格式化字符串函数来输出信息,调试程...原创 2019-05-21 10:54:49 · 766 阅读 · 0 评论 -
pwnable.kr-blackjack WP
题目是blackjack,翻译过来是扑克牌的一种玩法,叫21点。首先看了一下源码,700多行,脑壳疼,还是先玩一局看看吧规则和百度上的一样,就是一个21点的游戏,21点就赢了,如果没到21点的话,就比较大小。初始现金是500,让你输入你的赌注(bet),输入比你现金(cash)大的数会给错误提示。随便玩了一局,赢了,可以看到我的现金加了300,然后又试了一下输入一个负数,发现没有报错...原创 2019-05-25 09:52:25 · 375 阅读 · 0 评论 -
pwn学习--collision
pwn-test-collision本题来自https://pwnable.kr,是第二道题——collision。 首先通过ssh连过去,有三个文件,y一个可执行文件,一个C源文件,一个没有读权限的flag文件。尝试运行这个可执行文件,直接运行该程序,提示后面需要添加参数passcode,随便输入几个字符运行,得到提示需要输入20个字符,再输入20个字符,提示passcode错误。如图所示...原创 2019-03-21 15:38:06 · 724 阅读 · 0 评论