![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgixPl/btqtYmVW8Ny/zhf0Mdw58PVrM9aKBpRc2k/img.png)
오늘 풀 문제는 [Toddler's bottle]의 4번째 문제 flag. 이 문제 지문에 papa bought me a packed present! 라고 적혀 있는 걸 보아 패킹되어 있는 바이너리를 언패킹 하는 문제라는 것을 알 수 있었다. 패킹되어있는 바이너리는 objdump 로 파일의 헤더를 확인하거나 디스어셈블등이 되지 않는다. file '파일이름'으로 파일 정보를 확인해도 평소에 나오는 정보보다 훨씬 적은 정보만 나오는 것을 확인 할 수 있다. 바이너리 패킹 확인은 윈도우에서 더 쉽게 확인 할 수 있는데 PEID 를 이용해 대상 프로그램을 스캔 해 확인 할 수 있다. -Binary Packing 실행 압축. 바이너리 패킹은 바이너리 디스어셈블을 방지 하기 위한 리버싱 방지 기법이다. 압축을 푸는..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bJnzkq/btqtVfvTnjc/tD8qAfLSbfhUfwkEqm5UbK/img.png)
오늘 풀이할 문제는 bof. 버퍼오버플로우 취약점을 이용해 쉘을 따는 문제이다. 문제는 nc로 접속하여 접속하면 프로그램이 바로 실행되는 방식이기 때문에 바이너리와 소스코드는 링크로 주어졌다. -nc(netcat) TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 간단한 유틸리티 프로그램. ip와 포트 번호를 이용해서 해당 ip에 접속할 수 있다. 사용 방법 "nc ip/url 포트번호" -바이너리 0과 1로 이루어진(binary) 프로그램의 파일. 소스코드를 컴파일한 결과이다. 바이너리를 사람이 읽을 수 있는 기계어(ex. 어셈블리)로 바꾸는 것을 디스어셈블 이라고 함. 주어진 문제의 소스코드. func 함수를이용하여 버퍼를 오버플로우를 시켜서 "0xdeadbeef" 라고 설정 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8mvKN/btqtWIRmsK1/hCkZU9yK1Z0YdzFJMCmRB1/img.png)
대표적인 바이너리 분석 툴 objdump. 포너블을 할때 유용하게 쓰이는 툴이기 때문에 명령어 옵션을 정리해 보겠다. 사용 방법은 "objdump 옵션 파일이름" 이다. -objdump -s section 별로 나눠서 요청과 모든 내용를 보여줌 섹션과 텍스트 확인하기에 참 좋다. -objdump -S 어셈블리어로 디스 어셈블한 소스 전체를 보여준다. -objdump -t 심볼 테이블 확인 함수명이나 시스템 호출 확인하기에 좋다. -objdump -f 파일 헤더 확인 스타트 주소와 파일 포맷, 아키텍쳐, 플래그 등이 나온다. -objdump -h 섹션 헤더 확인 -objdump -D 전부 디버깅 -objdump -d 디스 어셈블
이번 문제는 전에 풀었던 cmd1 의 심화 버전으로 필터가 더 많이 걸려 있다. 1을 풀었으니 2도 풀 수 있겠지? 함께 풀어보자. 문제는 다음과 같다. 이때 주의 할 점은 cmd2의 비밀번호는 cmd1의 플래그 라는 것!1을 풀어야 2를 풀 수 있다. 접속해서 확인 해 보면 다음과 같이 cmd2 cmd2.c flag 파일이 나온다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag..
이번학기 목표를 pwnable.kr 를 hacker's secret 빼고 다 풀어 보는 것으로 잡았다. 그래서 오늘도 포너블문제 두개를 풀었는데 그것을 한번 풀이 해 보도록 하겠다. 이 문제에서 알아야 할 개념은 리눅스의 환경변수와 C의 strstr()함수 인데 문제를 풀면서 같이 공부해보자. 풀어볼 문제는 cmd1 리눅스의 환경변수를 이용하는 문제이다. 접속해보면 위와 같이 cmd1 cmd1.c flag 파일이 있다. 코드를 읽어보면 다음과 같은데 사용자에게 입력받은 문자열을 시스템 함수에 넣고 실행시키는 코드이다. 이때 strstr()함수를 통해 몇가지의 문자열이 필터링 된다. flag, sh, tmp -strstr(string1, string2) string2가 string1에 나타나는지를 검사하는..
최근 노트북에 Window 10 과 Kali 2019 듀얼 OS환경을 구축하였다. 그러면서 메인 OS 가 윈도우에서 Kali로 넘어 가게 되었는데, PC 카톡을 사용하지 못하게 되면서 겪는 불편함이 많아 kali에 카카오톡을 설치하기로 하였다. 현재 카카오톡은 리눅스용 PC 카톡을 지원하고 있지 않다. 따라서 칼리에서 카톡을 사용하기 위해서는 리눅스에서 윈도우 프로그램을 도와주는 wine 이라는 프로그램을 사용하여야 한다. 1. Wine 설치하기 와인 공홈에 있는 안내에 따라 wine 4.0을 설치 해준다. sudo dpkg --add-architecture i386 wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xelVU/btqvPMrm9Pu/IP8v8SWyYbGl34JkiG1Gf1/img.png)
포너블 공부를 하다보니 gdb 를 자주 사용하게 되는데 objdump랑 gdb 명령 옵션들을 자꾸 까먹는다. 생각날 때 마다 종종 정리 해야 겠다. 1.gdb -r 프로그램 실행 -b 브레이크 포인트 설정 -disas 함수 이름 함수 디스어셈블 -gdb core dump gdb 에서는 core를 dump 하여 볼수 있다. 생각한대로 동작 하지 않을 경우 core dump 해서 확인 해 보면 됨 -n 다음 라인으로 실행을 하기 위해서 next 함수를 사용 -ni 한 라인씩 실행. 특정 부분에서 break 걸어두고 한 라인씩 실행하면서 디버깅 할 때 사용 -q(quit) quit -Program terminated with signal SIGALRM, Alarm clock. The program no lon..
2월 14일 12:00 ~ 24:00 까지 진행되었던 제 1회 TRUST CTF 에 참가했다. 출제 되었던 문제 중 모바일 문제였던 IDENTITY_5를 풀이 해 보겠다. 제공되는 파일은 apk 파일이고 실행하여 "trust", "TRUST", "flag" 라는 값을 입력 하라고 나온다. 지시 대로 해보자. 프로그램을 실행하면 TRUST CTF 라는 글자와 함께 QR 코드가 뜨고 남한어 번역기라는 어플이 나오게 된다. 여기서 앞에서 주어진대로 "trust", "TRUST", "flag"를 넣어보면 둘다 base 64로 인코딩 되어있다. 디코딩 해보면 "where is the flag"와 "I_want_to_see_code"라는 단어가 나오게 된다. 결국 소스코드를 보란 이야기. flag를 넣으면 다음과 ..
이전글을 보고 싶다면? [System] - 펌웨어(firmware) 전에는 펌웨어 분석을 하기 위해서 펌웨어에 대한 지식을 알아봤다. 이번에는 대표적인 펌웨어 분석 툴인 'binwalk' 에 대해서 알아 보겠다. 1. binwalk? 대표적인 펌웨어 분석 툴. 펌웨어 분석 뿐만 아니라 포렌식 시 파일 카빙 등에 사용 할 수 있는 유용한 툴이다. binwalk 말고도 fmk(firmware mod kit) 라는 툴도 있는데 이 툴은 펌웨어의 소스를 까지 않고 수정할 수 있다는 장점이 있다. 그러나 사용 불가능한 펌웨어 버전도 존재한다고 한다. 필자는 fmk는 아직 사용 해보지는 않았음. github 에서 최신 버전을 다운 받아서 사용 하면 된다. 아래는 github 주소. https://github.com..
- Total
- Today
- Yesterday
- 뷰모델
- 에러
- 코드로 배우는 스프링 부트
- NumberFormatException
- 앱분석
- DataBinding
- 스프링부트
- 칼리리눅스
- reversing.kr풀이
- 동적분석
- AndroidX
- 자바
- exception
- 펌웨어 분석
- writeup
- Spring
- 정보보안
- 포너블.kr
- pwnable.kr
- 안드로이드
- 웹 MVC
- reversing.kr
- CTF
- Java
- MVVM
- 리버싱기초
- 모바일리버싱
- androidstudio
- Android
- 리버싱.kr
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |