pwnable.kr_bof
bof
checksec
[*] '/home/klose/ctf/pwn/file/pwnable_kr/bof/bof' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled
source code
#include <stdio.h>#include <string.h>#include <stdlib.h>void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n& ...
pwnable.kr_col
col
hint
Daddy told me about cool MD5 hash collision today.I wanna do something like that too!ssh col@pwnable.kr -p2222 (pw:guest)
列出文件并打印col.c文件;
col@pwnable:~$ ls -latotal 36drwxr-x--- 5 root col 4096 Oct 23 2016 .drwxr-xr-x 116 root root 4096 Nov 11 14:52 ..d--------- 2 root root 4096 Jun 12 2014 .bash_history-r-sr-x--- 1 col_pwn col 7341 Jun 11 2014 col-rw-r--r-- 1 root root 555 Jun 12 2014 col.c-r--r----- 1 col_pwn col_pwn 52 Jun 11 2014 flagdr ...
pwnable.kr_fd
fd
hint
Mommy! what is a file descriptor in Linux?* try to play the wargame your self but if you are ABSOLUTE beginner, follow this tutorial link:https://youtu.be/971eZhMHQQwssh fd@pwnable.kr -p2222 (pw:guest)
连上去后,查看根目录以及.c文件;
fd@pwnable:~$ ls -latotal 40drwxr-x--- 5 root fd 4096 Oct 26 2016 .drwxr-xr-x 116 root root 4096 Nov 11 14:52 ..d--------- 2 root root 4096 Jun 12 2014 .bash_history-r-sr-x--- 1 fd_pwn fd 7322 Jun 11 2014 fd-rw-r--r-- 1 root root 418 Jun 11 2014 f ...
l3hctf2021_spn
spn
修改链接
使用patchelf修改一下libc和ld的链接;
$ ldd SPN_ENC linux-vdso.so.1 => (0x00007ffe1bb7d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7c39adc000) /lib64/ld-linux-x86-64.so.2 (0x00007f7c3a0ac000)$ patchelf --replace-needed libc.so.6 /home/klose/ctf/pwn/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/libc-2.27.so ./SPN_ENC $ patchelf --set-interpreter /lib64/2.27-ld-64.so ./SPN_ENC $ ldd SPN_ENC linux-vdso.so.1 => (0x00007fffbcd2a000) /home/klose/ctf/pwn/glibc-all-in-one/libs/2.27- ...
l3hctf2021_checkin
checkin
修改链接
使用patchelf修改一下libc和ld的链接;
信息收集
编译选项
首先关注到hint,给了一堆不知道是gcc还是clang的编译选项:
-fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-all -Wl,-z,relro,-z,now
先看一下二进制文件是用的哪一个版本的编译器编译的;
$ objdump -s -j .comment checkin | bat───────┬────────────────────────────────────────────────────────────────────────────────────── │ STDIN───────┼────────────────────────────────────────────────────────────────────────────────────── 1 │ ...
tmux
tmux
tmux是一个terminal multiplexer(终端复用器),可以启动一系列终端会话, 它解绑了会话和终端窗口。关闭终端窗口再打开,会话并不终止,而是继续运行在执行。将会话与终端窗后彻底分离。 tmux使用C语言实现,可运行在OpenBSD,FreeBSD,NetBSD,Linux,OS,X,Solaris上。
链接、安装、启动、退出
tmux在github上的链接
https://github.com/tmux/tmux
安装
git clone https://github.com/tmux/tmux.gitcd tmuxsh autogen.sh./configure && make
或者
# ubuntusudo apt-get install tmux
启动与退出
# 启动$ tmux# 退出$ exit # Ctrl^D
功能用法
新窗口创建于命名
$ tmux new -s <name>
重命名会话
重命名tmux会话
$ tmux rename-session -t <id> <new-name> ...
kernel_debug
kernel debug
qemu和gdb调试,qemu中有内置的gdb接口,通过help查看:
$ qemu-system-x86_64 --help | grep gdb | bat───────┬────────────────────────────────────────────────────────────────────────────────────── │ STDIN───────┼────────────────────────────────────────────────────────────────────────────────────── 1 │ -gdb dev wait for gdb connection on 'dev' 2 │ -s shorthand for -gdb tcp::1234───────┴───────────────────────────────────────────────────────────────────────────── ...
l3hctf2021_slow-spn
slow-spn
题目做了一个虚拟的缓存,用于加速地址获取;
信息收集
checksec
Arch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)
ida
main
int __cdecl main(int argc, const char **argv, const char **envp){ init(); load_flag(); SPN(key, plaintext1, &cipher, &message); return 0;}
load_flag
void __cdecl load_flag(){ FILE *fp; // [rsp+28h] [rbp-18h] char buf[9]; // [rsp+37h] [rbp-9h] memset(buf, 0, 9uLL); fp = fopen("./flag.txt&q ...
qwb2018_core
qwb2018_core
一道Linux内核ROP攻击的题目;
信息收集
题目给了四个文件:
boot.sh: 一个用于启动 kernel 的 shell 的脚本,多用 qemu,保护措施与 qemu 不同的启动参数有关;
bzImage: kernel binary;
rootfs.cpio: 文件系统映像;
vmlinux:静态编译,未经过压缩的 kernel 文件,可以从中找到gadget,通过ropper来将gadget保存备用;
gadget
ropper --file ./vmlinux --nocolor > gadget
指令执行后,将生成的无颜色标记的gadget记录在gadget文件中;
如果没有给出vmlinux,可以用extract-vmlinux从bzImage中提取;
启动选项
查看start.sh启动选项的设置;
$ bat start.sh ───────┬────────────────────────────────────────────────────────────────────────────────────── │ ...
ciscn2017_babydriver
ciscn2017_babydriver
信息收集
下载源文件;
检查bzImage;
$ file bzImage bzImage: Linux kernel x86 boot executable bzImage, version 4.4.72 (atum@ubuntu) #1 SMP Thu Jun 15 19:52:50 PDT 2017, RO-rootFS, swap_dev 0x6, Normal VGA$ strings bzImage | grep "gcc"4.4.72 (atum@ubuntu) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #1 SMP Thu Jun 15 19:52:50 PDT 2017
下载对应内核版本并编译;
解包文件系统映像;
unzipcpio Arch: amd64-64-little RELRO: No RELRO Stack: No canary found NX: NX e ...