FTZ level5pw : what is your name? Level5입니다. ls명령으로 hint를 확인해보겠습니다. /usr/bin/level5 프로그램은 임시파일을 만든다고 합니다. 이 프로그램이 실행되면, /tmp디렉토리에 level5.tmp라는 임시파일을 생성한다고 하네요. 함 실행시켜보겠습니다. /tmp엔 아무 파일이 없군요. 아마도 프로그램을 실행하면 임시파일을 생성하고 다시 지우는 것 같은데요. 하지만 원래 tmp파일에 level5.tmp라는 파일이 있으면 임시파일을 생성할 때 내용이 덮어쓰이지 않을까요? 아무내용이 적힌 level5.tmp를 만들었습니다. 그리고 level5를 실행해보겠습니다. 실행 후 tmp 파일의 level5.tmp를 실행해보니, 예상과 같았습니다. Level6 pa..
FTZ level4pw : suck my brain level4 입니다. 힌트를 보니, 누군가가 백도어를 심어놓았다고 합니다. Xinetd는 리눅스의 네트워크 데몬을 가동하는 슈퍼 데몬입니다.네트워크 데몬이란, FTP, 텔넷, SSH, 아파치 등과 같은 네트워크 통신을 위한 데몬을 의미합니다. Xinetd의 역할은 네트워크서비스에 대한 접근제어, login에 대한 접근제어 등을 합니다. cd명령어로 저 디렉토리에 가보겠습니다. backdoor라는 파일이 있습니다. backdoor파일을 열어보니 이런 내용이 있습니다. finger 서비스에는 다양한 속성들과 속성 값들이 있는데요, 그 중에서 server부분은 해당서비스를 실행할 데몬프로그램을 지정한다고 합니다. 또, user부분을 보면 level5로 되어있..
프로그램 제작 원리 .c -> [complie] -> .obj -> [link] -> .exe decompiler는 .exe -> .c 해주는 프로그램이다. 완벽하게 재구성될 수 없으며, 결과가 매우 다양할 수 있다.disassembler는 기계어 -> 어셈블리어로 변환 해주는 프로그램이다. IA32 - 인텔 cpu 구조 크게 4가지로 나누어져 있음. ALU : 전기적인 신호를 계산하는 회로 Register : cpu에 있는 임시 기억 공간가장 빠른 메모리 공간임 Control unit : pc가 연산할때 상태, 결과를 알 수 있음 (EIP, IR, Eflags) I/O unit : 다른 버스들과 입출력하는 통로 역할. *Register 에 대해 자세하게: 범용 레지스터 EAX 연산의 결과를 저장하기 위..
[pwnable.kr] Toddler's Bottle - random (1 pt) write-up 폰케알 random 문제입니다. 서버에 접속 해보겠습니다. ls명령으로 확인 해보니, flag파일, 실행파일, 코드가 있습니다. 코드를 보겠습니다. 코드는 단순합니다.random변수는 rand함수로 부터 난수를 받아오고, key값은 입력을 받습니다.그러고 난 후, key와 random을 xor연산을 합니다. xor연산 후 0xdeadbeef와 같으면 플래그를 띄어줍니다. 코드에는 srand함수가 없습니다.그래서, 프로그램을 실행할 때 마다 random변수의 값은 일정합니다. 그렇다면, gdb를 이용해 브레이크포인트를 걸어놓고 random변수의 값을 찾으면 되겠네요. main+56에서 rbp-0x8과 rbp-..
[pwnable.kr] Toddler's Bottle - flag (7 pt) write-up 폰케알 flag문제입니다. 바이너리 파일을 다운받겠습니다.. 문제에 packed라는 힌트가 있습니다. 일단, 바이너리 파일을 ida로 열어보겠습니다. 그리고 컨트롤 + 1 을 눌러서 퀵 뷰를 열고 string을 검색하겠습니다. 음 upx. 어쩌구가 있군요. 문제의 내용과 같이 upx로 패킹이 되어있는 파일 같습니다. UPX(Ultimate Packer for eXecutables)는 여러 운영체제에서 수많은 파일 포맷을 지원하는 오픈 소스 실행 파일 압축 프로그램입니다. 먼저 컴퓨터에 upx를 깔고 바이너리 파일을 언패킹 하도록 하겠습니다. 이렇게 있습니다. 환경변수를 등록하여 cmd에서 해보려고 하니 오류가 ..
[pwnable.kr] Toddler's Bottle - collision(3 pt) write-up 폰케알 collision 문제 입니다. 서버에 접속해보겠습니다. ls명령으로 파일을 확인해보니, 실행파일 col, 코드 col.c, flag파일이 있네요. 코드를 확인해보겠습니다. 먼저, main함수부터 보겠습니다. argc가 2아래 일 경우, 프로그램은 종료 됩니다. 또, argv[1]의 길이가 20바이트가 아닐 경우 종료됩니다. 따라서 입력은 argv[1] 의 문자열로 받겠군요. 그리고 해쉬코드인 0x21DD09EC와 check_password(argv[1])의 값을 비교해서 참일시 플래그가 출력됩니다. 그럼이제, check_password() 함수를 보겠습니다. 입력받은 argv[1]의 값을 가져오..
[pwnable.kr] Toddler's Bottle - fd(1 pt) write-up 폰케알에 제일 첫 번째로 있는 문제입니다. 자기 자신 혼자서 풀라고 하네요. ssh로 접속을 해보면,간단한 pwnable.kr의 설명과 함께 접속이 됩니다. ls 명령어로 어떤 파일이 존재하는지 확인 해 보겠습니다. fd 실행파일과, fd.c 코드 파일, flag 파일이 존재합니다. C 코드를 해석하기 앞서 문제의 힌트인 문제제목 fd (파일 디스크립터)에 대해서 알아야 합니다. 파일 디스크립터란, 리눅스에서 시스템으로부터 할당받은 파일이나 소켓에 부여 된 정수 입니다. 윈도우의 핸들 개념과 비슷하다고 합니다. 하지만 차이점은 1씩 순서대로 추가가 된다고 합니다.파일 디스크립터는 0,1,2를 제외하고 3부터 정수를 ..
[pwnable.kr] Toddler's Bottle - bof(5 pt) write-up 폰케알 버퍼 오버 플로우 문제입니다. gets함수에서 오버플로우가 가능하겠군요. 메모리 구조는 func()의 전달인자 | sfp | ret | key | 더미 |overflowme[32] 이 될 듯 합니다. key의 값이 0xcafebabe 이면 자동으로 쉘을 띄어 줍니다. 버퍼 오버 플로우로 key의 값을 변조 해주면 되겠습니다. 먼저 gdb로 바이너리 파일을 분석하겠습니다. ebp-02c가 overflowme 버퍼의 시작주소가 되겠군요. 그리고 ebp+8 과 0xcafebabe를 비교합니다. ebp-02c 에서 ebp+8 의 거리는 수학시간에 배웠 듯이 뒤에서 앞을 빼면 거리가 나옵니다. 52이군요. 그럼 52..
- pwable
- SQLi
- heap
- exit
- 해킹
- stack reusing
- shellcoding
- fastbindup
- 본선가고싶다
- hacking
- fsop
- overflow
- FSB
- rt_sigreturn
- oob
- tcache
- fastbin
- HackCTF
- glibc
- pwnable
- srop
- pwnable.tw
- TLS
- codegate
- ebp change
- Total
- Today
- Yesterday