Category: System

peda, pwntools 설치하기

[pwntools] sudo apt-get install build-essential libssl-dev libffi-dev python-dev binutils binutils-dev python2.7 python2.7-dev python-pip sudo pip install pwntools [peda] sudo apt-get install git git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit

checksec.sh 스크립트 NX 확인 관련 오동작

최근 pwnable.kr 문제 중 tiny_easy를 풀다 checksec 결과에서 NX 값이 잘못 표시되는 것을 확인하고 포스팅 합니다. tester@ubuntu:~$ gdb tiny_easy GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO …

리눅스 바이너리 보안설정 확인

문제 바이너리의 보안설정을 확인할 수 있는 스크립트다. http://www.trapkit.de/tools/checksec.html tester@ubuntu:~$ file tiny_easy tiny_easy: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, corrupted section header size tester@ubuntu:~$ ./checksec.sh –file tiny_easy RELRO STACK CANARY NX PIE RPATH RUNPATH FILE No RELRO No canary found NX enabled No PIE No RPATH No RUNPATH tiny_easy 이 외에 …

PADOCON 2010 CTF trililogy200 풀이 – RTL

이번 문제의 풀이는 이렇다. 우선 로또번호 6 자리를 맞추어야 한다. 그리고 맞추고 나면 argv[7] 값을 strcpy() 함수를 이용하 복사를 하나 이부분에서 오버플로우가 발생한다. 다만 역시 랜덤스택이라 RTL을 이용하여 풀이을 하여야 한다. 우선 로또값을 맞추는 코드부터 작성해 보자.[code lang-python]#!/usr/bin/pythonimport os, rep = os.popen(‘./lotto 1 2 3 4 5 6’, ‘r’, 512)data =  p.readlines() tmp = re.findall(‘\d+’, …

오버플로우를 이용하여 함수의 흐름 변경 문제

문제 코드는 아래와 같다.[code]; Attributes: bp-based frame public mainmain proc near s= byte ptr -8Chvar_C= dword ptr -0Chvar_8= dword ptr -8 lea     ecx, [esp+4]and     esp, 0FFFFFFF0hpush    dword ptr [ecx-4]push    ebpmov     ebp, esppush    ecxsub     esp, 0A4hmov     [ebp+var_8], offset boolea     eax, [ebp+s]mov …

Debugging with gdbserver, IDA

[code]gdbserver host:port file[/code] 그리고 IDA에서 역시 해당 파일을 열고 아래와 같은 순서로 설정한다. 1) [Debugger] – [Select debugger] 에서 "Remote GDB debugger" 선택2) [Debugger] – [Process options] 에서 Hostname과 Port를 위에서 설정한 값으로 설정3) 그리고 실행! Debugging with gdbservergdbserver is a GDB stub implemented as a separate program. It runs a program to be debugged …

쉘코드 제작하기!

[code].globl mainmain:        jmp strings start:        pop %esi         xor %eax, %eax          // 초기화        xor %ebx, %ebx          // 초기화        xor %ecx, %ecx          // 초기화        xor %edx, …

objdump를 이용한 쉘코드 추출 스크립트

vortex 8번 문제는 쉘코드를 작성해야 하는 문제인데 코드를 작성하여 gcc로 컴파일 후 objdump를 이용하여 쉘코드만 따로 뽑아내는 작업이 너무 번거로워 간단하게 스크립트로 작성하였습니다.[code lang-python]#!/usr/bin/env pythonimport re, sys, os def parser():    f = open(‘dump.txt’, ‘r’)    data = f.read()    f.close()     data = re.split(‘[0-9a-f]{8} <‘, data)    for x in data:      …

2009년 해킹방어대회 예선 6번, RSA 알고리즘

[알고리즘]1). 두 개의 큰 소수 p와 q를 선정한 다음에 법n 과 φn 을 계산합니다.법n = pqφn = (p-1) (q-1) 2). 공개키 e는 φn과 서로 소(素)의 관계가 되게 임의로 선정합니다. 3). ed Mod φn = 1 의 관계에 있는 개인키 d를 유클리드 알고리즘을 통해 구합니다. 4). {e, n}을 공개키로 공개하고, {d} 는 개인키로 자신이 안전하게 보관합니다.m …

RTL(Returning into libc) 스터디 – 2

문제 환경은 아래와 같습니다.[code lang-sh][byjjoon@ByJJoon RTL]$ cat /etc/redhat-release Fedora release 9 (Sulphur)[byjjoon@ByJJoon RTL]$ sysctl -a | grep random-bash: sysctl: command not found[byjjoon@ByJJoon RTL]$ /sbin/sysctl -a | grep randomerror: permission denied on key ‘kernel.cad_pid’kernel.random.poolsize = 4096kernel.random.entropy_avail = 606kernel.random.read_wakeup_threshold = 64kernel.random.write_wakeup_threshold = 128kernel.random.boot_id = aa842921-f1e2-416e-8a72-240fa7054ae5kernel.random.uuid = 0f6a6b7f-11ed-4ba4-8b27-94cfbe6b62bbkernel.randomize_va_space = 2[byjjoon@ByJJoon RTL]$ /sbin/sysctl -a | grep execerror: permission denied …