study (27) 썸네일형 리스트형 [HackCTF] Pwnable - Basic_BOF #1 1. bof_basic 파일을 다운 받아서 IDA로 오픈 - HEX-RAY 플래그인이 설치되어야 디컴파일이 가능하다 - F5를 눌러 디컴파일을 한다. 2. 코드 해석하기 - 12번째 줄의 if문을 true로 만들어야 system 함수가 호출되는 것을 알 수 있음. => v5의 값을 0xDEADBEEF으로 만들어야함 - 변수 s와 v5가 있는 걸 확인, fgets() 함수를 사용해서 변수 s의 주소에 45바이트만큼의 입려값을 넣는다. - s의 주소는 ebp-34 / v5의 주소는 ebp-c → 0x43 - 0xc = 0x28 - 0x28은 10진수로 40. s와 v5 주소 차는 40바이트. - v5의 주소가 s의 주소보다 큰 값이기 때문에 먼저 선언 되었음을 알 수 있음(데이터 쌓이는 순서 : 높은 주소값.. Fileless 악성코드란? 기본적인 이해 운영체제에서 특정 행위를 발생시키기 위해서는 코드와 데이터가 필요합니다. 코드 → 특정 행위를 일으키는 주체 데이터 → 코드가 실행될 때 필요한 부가적인 정보 코드와 데이터를 묶어서 큰 의미의 데이터 봤을 때, 운영체제에서 데이터는 두 가지 형태로 존재할 수 있다. 하드 디스크에 파일 상태로 존재 OR 메모리에 상주 악성코드 VS. Fileless 악성코드 일반 악성코드와 Fileless 악성코드의 차이 : 악성 행위를 발생시키는 데이터의 위치와 관련있다. 악성데이터가 하드디스크에 파일 상태로 존재 VS. 메모리에 위치 Fileless 악성코드 시스템 메모리에 곧 바로 실행되어지므로 Fileless In-Memory Attack이라고 하며, 이러한 악성코드를 Fileless malware라.. 악성코드란? 악성코드(Malware)란? 사용자 컴퓨터에 악의적인 영향을 끼칠 수 있는 모든 소프트웨어를 말한다. 악성코드의 유형 컴퓨터 바이러스(Computer virus) 정상적인 파일이나 시스템 영여겡 침입하여 그 곳에 자신의 코드를 삽입하거나 설치하는 프로그램을 칭하는 이름으로 감염 방법이나 동작 원리에 따라 메모리 상주형 바이러스, 파일 바이러스, 덮어쓰기, 은폐형 등 여러 가지로 세분화하여 나뉩니다. 웜 (Worm) 컴퓨터 바이러스처럼 다른 파일을 감염시키는 것이 아닌 자기 자신을 레지스트리에 등록하거나 복사본을 생성하여 전파하는 등의 독자적으로 실행되는 악성코드를 말한다. 웜은 이메일에 첨부되어 확산되거나, P2P 파일 공유, 프로그램 보안 취약점, 네트워크 공유 기능 등을 이용하여 스스로 중식하여 빠르.. [CTF] pwanable.kr_passcode (PLT와 GOT 개념 정리) pwnable.kr의 passcode 문제 풀이 문제 해석 더보기 엄마가 암호 기반 로그인 시스템을 만들라고 하셨어. 내 초기 C 코드는 오류 없이 컴파일되었어! 컴파일러 경고가 있긴 했지만 누가 신경이나 쓰겠어? ssh 접속하기 1. ls -al 명령어를 사용하여 파일 및 디렉토리 리스트를 출력 : 권한(퍼미션, 허가권)을 확인 할 수 있음 출력 결과 -> 파일 종류 및 권환(퍼미션), 링크 수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름 관련 내용 : https://pamooochim.blogspot.com/2015/10/blog-post_27.html 리눅스 파일 구조와 파일 권한 읽기, 명령어 소개 파일 구조 ls -l 명령어로 파일 목록 출력했을 때 보이는 화면 형식: {파일유형} .. [python] 프로그래머스 - 해시 level 2 코딩테스트 연습 : 해시 level 2 전화번호 목록 문제 설명 앞의 전화번호가 뒤의 전화번호의 접두어가 되면 안된다. (x) -> 어떤 전화번호도 다른 전화번호의 접두어가 되면 안된다. 시도 1 : 딕셔너리를 2개 사용하여 앞, 뒤 요소를 비교 ["119", "97674223", "1195524421"] 예제를 사용해서 설명하자면, 앞의 요소 119를 뒤에서부터 차례로 하나씩 늘려가며 hash1 에 값을 저장하고, 뒤의 요소 "97674223"를 앞의 요소 길이만큼 앞에서부터 차례로 하나씩 늘려가며 hash2에 값을 저장한다. def solution(phone_book): answer = True for i in range(len(phone_book)-1): hash1 = {} hash2 = {} fo.. [python] 프로그래머스 - 해시 level 1 (딕셔너리 개념 정리) 코딩테스트 연습 : 해시 level 1 완주하지 못한 선수 해시는 Key-value 쌍으로 데이터를 저장하는 자료구조 시도 1 : 해시 사용 X def solution(participant, completion): answer = '' for i in range(len(participant)): if participant[i] in completion: index = completion.index(participant[i]) del completion[index] else: answer = participant[i] break return answer 시도 2 : 해시 사용 해시 = 딕셔너리 -> key 와 value로 이루어짐 딕셔너리 특징 1. 값이 입력한 순서와 상관없이 무작위로 저장 -> 인덱스 .. [CTF] suninatas.com_web02 suninatas.com의 web 2번째 문제풀이 2번째 문제는 로그인 문제이다. 처음엔 SQL injection인 줄알고 접근 했지만, 아니였다. 크롬 개발자모드로 코드를 확인하면 Join 버튼을 누르면 실행되는 함수를 볼 수 있다. id와 pw가 같으면 로그인에 실패하고, 같지 않으면 document.web02.submit(); 이 실행돼서 성공하는 것처럼 보인다. 하지만 힌트를 보면 id와 pw가 같아야한다고 한다. 모순적인 말로 혼란을 가져올 수도 있다. 단순하게 개발자도구의 콘솔창으로 javascript 코드 우회를 하면 된다. 위의 코드는 함수를 재정의 해줌으로써 id와 pw에 동일한 값을 넣으면 로그인에 성공하도록 하였다. 더보기 정답 [CTF] reversing.kr_easy crack reversing.kr의 easy crack 문제풀이 별다른 힌트 없이 문제를 클릭하게 되면 바로 파일이 다운로드 됩니다. exe파일을 실행하면, 이런 창이 뜨고 박스 안에 아무 문자열을 입력 했을 때 맞지 않는 패스워드라고 뜹니다. 정확한 패스워드를 입력해야 플래그 값을 찾을 수 있을 것 같습니다. 우선 실행파일로 IDA로 열어 보겠습니다. 구조를 확인하면 왼쪽은 패스워드를 맞췄을 때, 오른쪽은 틀렸을때 이동하게 됩니다. 이걸 주소와 함께 보자면, 틀렸을 때 이동하는 주소 부부은 loc_401135 로 위 코드에서 이쪽으로 이동하는 부분을 찾아주면 됩니다. loc_401135 를 클릭하고 위로 올리면 동일한 주소에 노란색 하이라이트가 생겨 보기 쉬워집니다. jnz short loc_401135 이 코드.. 이전 1 2 3 4 다음