본문 바로가기

CTF

(16)
dreamhack CTF ROUND#10 : Times file명령으로 확인 스트립된 64bit ELF파일임 readelf -h 옵션으로 elf헤더 분석 entry point 가 0x1220인것을 확인 strings명령으로 파일 내부 문자열 전부 추출 함수 이름들, 사용하는 문자열등이 보임 아마 내부적으로 조건을 맞추면 나머지 쓰레기 문자열들을 처리해서 디코딩 후 출력해주는 로직일듯? 메모리 보호기법 확인 checksec.sh https://www.trapkit.de/tools/checksec/ RELRO, NX, PIE가 적용된걸 확인 Full RELRO : bss영역을 제외한 모든 부분에서 write권한이 사라짐 NX : Non eXecute. 데이터 영역(스택, 힙)에서 코드 실행권한을 삭제하는것 (윈도우에선 DEP라 부른다) PIE : 위치 독립 실행..
python 쓸만한 함수들 format 함수 reddb.tistory.com/71 int 바이트오더 변경 import binascii n = 0x12345678 b = bytearray.fromhex(format(n, 'x')) b.reverse() print(hex(int(binascii.hexlify(b), 16))) 정리필요 import binascii local_38 = 0x743f3d3f3d6a6c6c local_30 = 0x62507c66506e6b66 local_28 = 0x6b616a667d695076 local_20 = 0x72 res_s="" n = local_38 b = bytearray.fromhex(format(n, 'x')) b.reverse() #print(hex(int(binascii.hexlify(b..
X-MAS 2019 : Deep Down in the Rabbit Hole 이 문제에서는 한 pcapng 파일을 다운받을 수 있다. 열어보면 아래와같이 USB를 통해 주고받은 패킷임을 알 수 있다. 전송하는 패킷을 보다가 USB Keyboard라고 전송하는 패킷을 볼 수 있었다. 아마 이 패킷은 USB 키보드의 패킷이고 키보드에서 입력한 값을 빼오는것같다. SCAPY scapy를 설치해서 pcap파일을 연다. *scapy : 네트워크 패킷에 대해 전송, 스니핑, 위조 등을 수행할 수 있는 파이썬 모듈. rdpcap으로 파일명을 지정해서 파일을 열고 print로 Other(USB) 형태의 패킷이 1301개가 존재하는것을 알 수 있다. .show 명령으로 패킷의 내용을 읽어올 수 있는데, 인덱스를 참조하면 패킷의 내용을 볼 수 있다. 첫번째 패킷) wireshark로 봤을 때 sc..
X-MAS 2019 : Execute No Evil (1) New Message: "Hey dude. So we have this database system at work and I just found an SQL injection point. I quickly fixed it by commenting out all the user input in the query. Don't worry, I made the query so that it responds with boss's profile, since he is kind of the only person actively using this database system, and he always looks up his own name, lol. Anyway, guess we'll go with this ..
DIMICTF 2019 : exec me View Source  소스코드를 살펴보면 filter라는 변수에 값을 넣고 이 값들이 포함되어있다면 Filtered라는 메시지를 출력하고 포함되지 않으면 eval을 통해 exec파라미터로 받은 값(문자열)을 php 코드로 인식하여 실행시켜준다는 의미이다. ls 명령을 입력하려면 eval(system("ls");); 이런 형태가 되어야 할 것이다.  URL?exec=$filter[0](chr(108).chr(115));이렇게 입력하게되면 'system'("l"."s"); 와 똑같이 인식하게 되는데php에서는 "system"("ls"); 이렇게 함수명이 문자열이여도 실행되는 특징을 가지고있다. 또한 "abc"."def" 처럼 .으로 문자열을 연결시킬 수 있기 때문에 위와 같이 입력한다면 ls 명령어를 실..
DIMICTF 2019 : reader Ctrl + D : EOF를 입력하는 단축키(시그널 개념이 아니라 문자입력의 개념이다). 시스템에서는 EOF 문자가 입력되면 버퍼플러시가 발생하도록 설계되어 있는데, 프로그램에서는 엔터가 버퍼플러시역할을 수행하여 즉시 데이터를 처리하게된다. 그렇기 때문에 프로그램에서 EOF 문자가 발생하면 즉시 데이터를 처리하게 되지만 전달된 데이터가 없기 때문에 따로 처리하지 않는 한 에러가 발생하고 그 에러로 추가적인 정보를 얻을 수 있다. 데이터를 하나라도 입력하고 EOF를 입력하면 엔터와 동일한 역할을 수행한다. 프로그램이 파이썬이라는 사실과 /var/challenge/reader_main.py 라는 프로그램 경로를 확인할 수 있다. Ctrl + C : 프로그램을 종료하는 SIGINT라는 시그널을 전송하는 단축키..
picoCTF 2019 : CanaRy https://ctf101.org/binary-exploitation/stack-canaries/ Stack Canaries - CTF 101 From here you can search these documents. Enter your search terms below. ctf101.org https://j3rrry.tistory.com/54 picoCTF 2018 buffer overflow 3 Binary Exploitation 요약 4바이트 길이의 canary 값이 고정되어 있기 때문에 1바이트씩 '\x00' 부터 '\xff' 까지 넣어봐서 "stack smash" 가 뜨는지 확인하면 "4xV," 가 canary 임을 알 수 있고 이제 RET에 flag를 출력해주는 함수 el.. j3rrry.ti..
picoCTF 2019 : rop32 https://kblab.tistory.com/223 ROP 기법은 가젯이라는 작은 코드조각들을 모아 원하는 코드를 실행하도록 조립하는 기법이다. #include #include #include #include #include #define BUFSIZE 16 void vuln() { char buf[16]; printf("Can you ROP your way out of this one?\n"); return gets(buf); } int main(int argc, char **argv){ setvbuf(stdout, NULL, _IONBF, 0); // Set the gid to the effective gid // this prevents /bin/sh from dropping the privile..