[카테고리:] 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을 이용하여 풀이을 하여야 한다. 우선 로또값을 맞추는 코드부터 작성해 보자. #!/usr/bin/python import os, re p = os.popen('./lotto 1 2 3 4 5 6', 'r', 512) data = p.readlines() …

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

문제 코드는 아래와 같다. ; Attributes: bp-based frame public main main proc near s= byte ptr -8Ch var_C= dword ptr -0Ch var_8= dword ptr -8 lea ecx, [esp+4] and esp, 0FFFFFFF0h push dword ptr [ecx-4] push ebp mov ebp, esp push ecx sub esp, 0A4h mov [ebp+var_8], offset boo lea eax, [ebp+s] mov [esp], eax …

Debugging with gdbserver, IDA

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

쉘코드 제작하기!

.globl main main: jmp strings start: pop %esi xor %eax, %eax // 초기화 xor %ebx, %ebx // 초기화 xor %ecx, %ecx // 초기화 xor %edx, %edx // 초기화 mov %esi, 0x0(%esp) // %esp+0 부분에 "/bin/sh" 입력, name[0] mov %eax, 0x4(%esp) // %esp+4 부분에 NULL 입력, name[1] mov $0xb, %al // execve 시스템콜에 해당하는 0xb %eax에 …

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

vortex 8번 문제는 쉘코드를 작성해야 하는 문제인데 코드를 작성하여 gcc로 컴파일 후 objdump를 이용하여 쉘코드만 따로 뽑아내는 작업이 너무 번거로워 간단하게 스크립트로 작성하였습니다. #!/usr/bin/env python import 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: try: title = re.search('.*>:', x).group() except: title …

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

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

RTL(Returning into libc) 스터디 – 2

문제 환경은 아래와 같습니다. [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 random error: permission denied on key 'kernel.cad_pid' kernel.random.poolsize = 4096 kernel.random.entropy_avail = 606 kernel.random.read_wakeup_threshold = 64 kernel.random.write_wakeup_threshold = 128 kernel.random.boot_id = aa842921-f1e2-416e-8a72-240fa7054ae5 kernel.random.uuid = 0f6a6b7f-11ed-4ba4-8b27-94cfbe6b62bb …