본문 바로가기

전체 글122

[CodeEngn] Challenges Basic RCE L10, L11, L12 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L10 L10. OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 프로그램을 실행시키면 다음과 같이 이름과 시리얼 번호를 입력하는 메시지 박스가 나온다. 프로그램의 정보를 확인해 본 결과 Aspack으로 패킹되어 있음을 알 수 있다. Aspack도 이전의 문제에서 했던 패킹 방법과 같은 방식으로 언패킹하면 된다. JNE이후 PUSH를 하는 경우 JUM와 동일하게 해당 주소로 이동하는 동작을 한다. 따라서 445834=OEP로 이동한다. string문자열 중 "registered...well done!" 문자열이 등록 성공 문자열로 추측된다. 문자열 위쪽 코드를 보면 44552B로 .. 2021. 8. 15.
[CodeEngn] Challenges Basic RCE L07, L08, L09 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L07 L07. 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 string검색해서 시리얼 번호를 비교하는 것으로 추측되는 부분으로 이동한다. 비교 코드의 시작부분으로 추측되는 코드에 BP를 걸고 실행시켜본다. 메시지 박스에 시리얼 문자열을 입력하고 check버튼을 누르면 BP를 건 부분으로 이동한다. GetDlgItemText함수에서 사용자가 입력한 문자열을 가져온다. 'Ente'를 입력했다. VolumeName매개변수가 가리키는 주소(40225C)로 지정된 볼륨의 이름을 받아온다. 현재 분석 환경의 C드라이브 이름이 없기 때문에 빈 문자.. 2021. 8. 9.
[CodeEngn] Challenges Basic RCE L04, L05, L06 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L04 L04. 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 파일을 실행시키면 다음과 같이 그냥 실행시켰을 땐 '정상', 디버거를 통해 실행시켰을 경우 '디버깅 당함'이 나온다. 현재 프로그램이 디버깅을 당하고 있는지 체크하는 프로그램이다. ollydbg에서 파일을 열어 진행해보았다. 계속 진행하다보면 40100F 함수에서 cmd창에 탐지 여부 결과가 출력되며 코드 진행이 끝난다. 이 함수 안에서 루프문을 돌고 있는 것으로 보인다. 함수로 들어가보면 아래의 코드를 반복하면서 정상/디버깅 당함 여부를 체크하는 것으로 추측된다. KERNEL32.IsDe.. 2021. 8. 6.
[CodeEngn] Challenges Basic RCE L01, L02, L03 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L01 L01. HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 이 파일이 몇 비트의 파일인지 찾는 방법은 많지만 그 중 파일 포멧 구조를 통해 찾아보았다. NT HEADER 내의 IMAGE_FILE_HEADER의 구조체 중 machine의 값은 CPU 별로 고유한 값을 의미한다. 32 bit Intel 호환 칩은 0x014C의 값을 가지며 64 bit Intel 칩은 0x0200의 값을 가진다. 32비트 파일이라는 것을 알았으니 ollydbg를 통해 파일을 열어보았다. 401000이 EntryPoint이고, 차례로 실행시켜보면 MessageBox AP.. 2021. 8. 5.
[CodingStudy] 신규 아이디 추천 틀린 부분이 있다면 언제든지 댓글 남겨주세요! 프로그래머스_2021 카카오 BLIND RECRUITMENT [ 신규 아이디 추천 ] 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램. 조건 - 아이디의 길이는 3자 이상 15자 이하. - 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있음. - 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없음. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 .. 2021. 8. 2.
[CodingStudy] 숫자 문자열과 영단어 틀린 부분이 있다면 언제든지 댓글 남겨주세요! 프로그래머스_2021 카카오 채용연계형 인턴십 문제 [ 숫자 문자열과 영단어 ] 숫자 문자열의 일부가 영단어로 바뀌어졌거나 그대로인 문자열 s가 입력으로 주어짐. 문자열 s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성. 조건 - 1 2021. 7. 14.
GDB 실습 1 보호되어 있는 글 입니다. 2021. 5. 16.
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.
2020 정보처리기사 합격 후기 2020년 정보처리기사 자격증 합격 후기 2020년 4학년이 되고 바로 1회 기사시험을 보려고 했었다. 그런데 코로나가 터지면서 3월 첫주에 예정되었던 필기시험이 계속해서 미뤄지면서 결국 6월 6일에 시험을 치르게 되었다. 개정 후 첫 시험이라 걱정했었는데 자꾸 미뤄지다보니 긴장도 안되고 공부도 안되고 그냥 빨리 시험보고 싶은 맘이었다...;.. 필기 준비 필기 시험 준비를 위해 샀던 책은 2020 시나공 정보처리기사 필기이다. 시나공을 선택한 이유는 먼저 딴 선배가 이기적이랑 시나공 둘 다 샀었는데 시나공이 더 좋다고 추천해줬기 때문이었다. 책을 산 시기는 2월이었지만 정작 열심히 공부한건 시험보기 1주 전이었던 것 같다. 전공과목으로 배웠던 부분 ( 데이터 베이스, 자료구조, 프로그래밍 언어, 운영체.. 2021. 2. 24.
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.
728x90
반응형