본문 바로가기

Security51

GDB 사용법 틀린 부분이 있다면 언제든지 댓글 남겨주세요! GDB 명령어 사용법 GDB :유닉스 계열 시스템의 디버거 - GDB 실행 간단하다. gdb라고 치면 끝! GDB 실행을 종료하려면 q를 입력하면 된다. - 프로그램 실행 stack이라는 프로그램에 GDB를 붙여보았다. 아직 프로그램이 실행된건 아니다. run이라는 명령어를 통해 실행할 수 있다. 이 코드는 간단하게 사용자가 입력한 값을 출력해주는 동작을 한다. 만약 매개변수를 전달하고자 한다면 run 뒤에 매개변수를 쓰면 된다. - 디버깅 main함수 디버거 코드를 보기 위해서 disas main(=disassemble main) 명령어를 입력한다. 이때 어셈블리 코드를 인텔형식으로 보기 위해서 set disassembly-flavor intel 명령어를 .. 2021. 5. 5.
Reversing Basic Challenge #2 틀린 부분이 있다면 언제든지 댓글 남겨주세요! DreamHack Wargame 1단계 Reversing Basic Challenge #2 문제 풀이 리버싱 워게임 기초 문제들은 프로그램의 동작을 파악해 문자열을 이용하면 해결되는 문제들이 많다. 이 문제도 마찬가지이다. 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램을 바이너리를 분석하여 correct를 출력하는 입력값을 찾아야 한다. x64dbg 디버거를 이용한다. [마우스 우클릭-다음을 찾기-모든 모듈-문자열 참조] 를 통해 해당 프로그램 내에서 사용되는 문자열을 확인해보면 input, correct, wrong의 문자열을 찾을 수 있다. 우선 input문자열에 해당하는 주소.. 2021. 4. 25.
System Exploitation Fundamental #1 보호되어 있는 글 입니다. 2021. 4. 19.
Abex crackme #5 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #5 문제 풀이 이 프로그램은 델파이로 만들어져 있으며 실행해보면 시리얼넘버를 입력하라는 메시지창이 뜬다. 알맞은 시리얼 넘버를 입력하면 오른쪽과 같이 Well Done! 메시지창이 뜨고 잘못된 시리얼 넘버를 입력하면 왼쪽과 같이 Error! 메시지창이 뜬다. 단순히 문제해결만 하는 것은 간단하다. 앞선 문제에서 했던 것처럼 Found Intermodular call에서 MessageBox함수의 위치를 찾아 정답 문자열을 출력하는 부분부터 값을 찾아 나가면 된다. JE명령어에 따라 EAX가 0이어야 정답 메시지를 출력하는 부분으로 점프함을 알 수 있다. * Jump Equal=비교하는 값이 같으면 ZF=1, ZF가 1일 때 jump동작.. 2021. 2. 7.
Abex crackme #4 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #4 문제 풀이 이 프로그램을 실행시키면 시리얼번호를 입력하는 칸이 있고 register버튼이 비활성화 되어있다. 분석을 통해 알맞은 번호를 찾아 입력하여 register버튼이 활성화 되도록 하는 것이 이번 문제의 핵심이다. 지금 상태에서는 정답 메시지도 확인할 수 없기 때문에 힌트를 찾기 힘들다. 이럴 땐 API검색을 사용한다. 알맞은 시리얼 번호를 찾으려면 비교 함수를 사용할 것이므로 API중 비교함수를 찾는다. [코드화면 > 오른쪽 마우스 > search for > all intermodular calls] 원하는 API에서 엔터키를 누르면 그 코드로 이동하며, API에서 바로 BP를 걸 수도 있다. * visual basic으로.. 2021. 2. 7.
Abex crackme #3 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #3 문제 풀이 이 예제는 일련번호를 담은 파일을 생성하는 것을 목적으로 하는 프로그램이다. 우선 어떤 파일명으로 생성할 것인지를 알아내고 그 파일을 정해진 규칙에 맞도록 변경해야 한다. 그냥 프로그램을 실행시켰을 때에는 ‘Click OK to check for the keyfile.’ 이라는 메시지가 뜨고 확인을 누르면 ‘Hmmmmm, I can’t find the file!’ 이라는 Error 메시지가 뜬다. 디버거에서 해당 프로그램을 열면 문자열을 따로 찾을 필요도 없이 엔트리 포인트 아래로 찾아야 할 문자열들을 확인할 수 있다. Step over(F8)을 통해 실행 과정을 보면 시작 메시지가 뜨고 확인을 누르면 CreateFil.. 2021. 2. 7.
PEB TEB 보호되어 있는 글 입니다. 2021. 2. 2.
Abex crackme #2 / ollydbg 단축키 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #2 문제 풀이 이 예제는 사용자가 입력한 이름과 관련 있는 일련번호를 찾아내는 것을 목적으로 하는 프로그램이다. 우선 프로그램을 실행해보면 0x00401238 (entry point)에서 멈췄다가 다시 F9로 실행하면 메인 함수인 ThunRTMain함수에서 실행이 멈추고 다음과 같은 메시지 창을 띄운다. 메시지 창에 값을 입력했을 때 나오는 결과는 크게 3가지로 보인다. 일련번호 오답, 정답, 이름 길이 부족. 프로그램의 길이가 길어 처음부터 살펴보기 어려울 땐 프로그램을 실행시켰을 때 뜨는 메시지에 포함된 문자열을 검색해서 그 부분부터 확인하는 방법을 사용하면 좋다. ollydbg에서는 search for > all referenc.. 2021. 1. 25.
Reversing Basic Challenge #1 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Dreamhack 워게임 rev-basic-1 dreamhack.io/wargame/challenges/15/ rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io Reversing Basic Challenge #0 문제와 거의 동일하다. main함수 확인 결과 256길이의 문자열을 입력받아 비교하는 기능을 한다. sub_7FF616683228 함수를 자세히 확인해본다. 문자열의 문자를 하나씩 비교하는 함수이다. 각 문자를 조합해보면 .. 2020. 12. 20.
728x90
반응형