-
pwnable.kr - uaf (C++)
It’s my first time to pwn with a C++ challenge. So I need to note something here. ssh uaf@pwnable.kr -p2222 (pw:guest) Code Review 3 choices: call the virtual function(introduce) of two objects allocate a memory chunk with arg1 size then read data from arg2 to fill that delete two objects...
-
picoCTF - Guessing Game 2
picoCTF - GuessingGame2 Analysis 输入随机数确认成功,输入名字后可以bof void win() { char winner[BUFSIZE]; printf("New winner!\nName? "); gets(winner); printf("Congrats: "); printf(winner); printf("\n\n"); } 这里的printf(winner)存在字符串格式漏洞利用,可以通过类似%n$p的方法来获得找到第n个参数位置保存的值 检查下保护: [*] '/home/clot/CTF/GuessGame2/vuln' Arch: i386-32-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000) 可以看到有Canary,那就可以通过字符串格式漏洞来找到这个canary来绕过。 Solution 确认随机数 leak libc里puts的地址,获得libc的基地址,生成system和/bin/sh的地址 leak canary的地址 构造payload来exploit Random Number 这里的随机数由于服务器和本地libc版本的不同,导致生成的随机数是不同的。 当时在随机数上浪费了很多不该浪费的时间,本来是想过暴力破解,但是觉得好慢,就在考虑是不是有别的办法。...
-
picoCTF - Guessing Game 1 (ROP Chain)
Guessing Game 1 这题主要涉及到的是ROP chain的使用,由于没做过这类题所以还是学到不少东西,在这里输出一下。 Code Review 题目有三个文件,分别是源码、执行文件和Makefile,可以看到Makefile里的编译指令开启了这些选项-fno-stack-protector -O0 -no-pie -static,分别是关闭栈保护,无优化,代码位置不会改变,且没有动态库,libc都被静态链接进来了。(调试时候使用题目发的二进制,不要自己编译,因为最后需要nc到服务器上执行,代码地址可能会有变动(嗨,在这吃了亏)) clot@ubuntu:~/CTF/GuessGame1$ ./vuln Welcome to my guessing game! What number would you like to guess? 84 Congrats! You win! Your prize is this print statement! New winner! Name? Jin Congrats Jin What number would you like to guess? 通过执行程序和读源码 vuln.c,理解了大致流程:...
-
Reverse Engineering (ARM)
Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ssh leg@pwnable.kr -p2222 (pw:guest) 这题主要考一些基本的ARM知识,比较简单。 下载文件可以看到源码c文件和调试时打印的反编译后的内容。源码文件中有三个关键函数是用汇编写的,只要计算出这三个函数的返回值之和就行。 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, $0x4\n" "push {r3}\n" "pop {pc}\n" ".code 32\n" "pop {r6}\n" ); } int key3(){ asm("mov...
-
pwnable.kr - Shell Shock
pwnable.kr - shellshock Mommy, there was a shocking news about bash. I bet you already know, but lets just make it sure :) ssh shellshock@pwnable.kr -p2222 (pw:guest) 一、用户权限问题 Linux下文件的权限查看: shellshock@pwnable:~$ ls -al total 980 -r--r----- 1 root shellshock_pwn 47 Oct 12 2014 flag -r-xr-sr-x 1 root shellshock_pwn 8547 Oct 12...
-
pwnable.kr - Linux IO
还是一道pwnable.kr上的题,总结下涉及到的知识点 ssh input2@pwnable.kr -p2222 #password: guest 第一关是组装参数,需要100个,第’A’'B’'C’个参数需要特别定义 // argv char *argv[101]; argv[0] = "/home/input2/input"; for(int i = 0; i < 101; i++) { argv[i] = "x"; } argv['A'] = "\x00"; argv['B'] = "\x20\x0a\x0d"; argv['C'] = "55555"; 第二关是IO重定向,这里用pipe创建了两个管道,数组中第0个是输出口,第1个是输入口。其中一个输出口重定向到stdin,另一个输出口重定向到stderr。然后通过fork建立一个子进程,在子进程中向输入数据,最终流入stdin和stderr。 if ((childPid = fork()) <0) { exit(-1); } if (childPid == 0) {...