본문 바로가기

분류 전체보기202

[Webhaking.kr] old 22번 22번 문제에 들어가자마자 나오는 화면이다. 회원가입과 로그인 버튼이 있고 username과 password를 입력하는 칸이 존재한다. 아래 mission을 보니 admin으로 로그인을 해야 할 것 같고 데이터베이스의 column이 id와 pw가 있다. quest, quest로 로그인을 시도하니 Login Fail이 나온다. Test와 test로 회원가입을 시도하였다. 계정을 생성하였다. 이로써 DB에 우리가 입력한 ID와 PW를 넣는다는 것을 알 수 있다. 테스트 계정으로 로그인을 시도하였더니 password의 hash 값을 보여준다. admin으로 로그인을 시도하였지만 실패하였다. Admin’ or ‘1’=’1을 username과 password에 넣어서 구문 테스트를 하였다. 결과는 Wrong pa.. 2020. 11. 9.
[Webhaking.kr] old 9번 9번 문제에 들어가니 패스워드를 입력하는 칸이 나왔다. 아무래도 패스워드를 알아내는 것이 문제인 것 같다. 1, 2, 3을 차례대로 눌러보았다. 1을 눌렀더니 1,2,3이 있던 자리에 Apple이 뜨고 url에 get 방식으로 no=1이 전송된다. 2를 눌렀더니 apple과 같이 1,2,3이 있던 자리에 banana가 뜨고 url에 apple은 no=1이 전송되었지만 banana에서는 get방식으로 no=2가 전송된 것을 볼 수 있다. 3을 눌렀더니 다른 번호들과 같이 no=3이 전송되었지만 apple, banana 같은 단어가 아닌 Secret이 출력되고 hint와 column이 주어진다. Column이 id와 no만 있는 것을 보면 apple과 banana는 id의 값이고 secret의 id 값을 나.. 2020. 11. 9.
[리버싱 핵심 원리] 16장, Base Relocation Table 16장, Base Relocation Table 16.1. PE 재배치 PE 파일(EXE, DLL, SYS)이 프로세스 가상 메모리에 로딩(loading)될 때 PE 헤더의 ImageBase 주소에 로딩된다. DLL(SYS) 파일의 경우 ImageBase 위치에 이미 다른 DLL(SYS) 파일이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. 이것을 PE 파일 재배치라고 한다. 즉, PE 재배치란 PE 파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될 때 수행되는 일련의 작업들을 의미한다. 16.1.1. DLL/SYS TEST.EXE 프로세스에 A.DLL이 10000000 주소에 로딩되어 있다. 이후 B.DLL이 같은 주소(10000000)에 로딩을 시도하면 PE 로더는 비어 있는 주.. 2020. 11. 7.
[리버싱 핵심 원리] 5장, 스택(Stack) 05, 스택(Stack) : 차곡차곡 쌓여진 데이터를 의미 [ 스택의 특징] - 메모리의 데이터들을 효율적으로 다루기 위해 고안된 데이터 참조 방식 중 하나 - 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 되는 구조를 가진다 ( FILO(First in Last out) 구조) - 구조상 특징이 마치 더미를 쌓아 올린 모습과 흡사 - 가장 먼저 처리해야 될 것을 가까운 곳에 둔다. - push: 스택에 새로운 자료 추가 / pop: 스택에 저장된 값을 뺌 - TOP: 스택에 쌓인 데이터의 가장 높은 위치의 메모리 주소 값(실제로는 가장 낮은 주소 값) - 기준이 되는 위치 - Bottom: 스택에 쌓인 데이터의 가장 낮은 위치의 메모르 주소 값 (실제로는 가장.. 2020. 11. 7.
[리버싱 핵심 원리] 4장, IA-32 Register 기본 설명 04, IA-32 Register 기본 설명 4.1.CPU 레지스터란? 레지스터: CPU 내부에 존재하는 다목적 공간 - Ram과는 다른 성격을 가진다. - CPU가 RAM에 있는 데이터를 엑세스 하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸린다. 그러나 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 전송할 수 있다. 4.1.1.레지스터를 알아야 하는 이유? - 리버싱 초급 단계에서 애플리케이션 디버깅을 잘 하려면 디버거가 해석해 주는 어셈블리 명령어를 공부해야 한다. - 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하는 것들인데, 정작 레지스터를 모르면 명령어 자체도 이해하기 힘들다. 4.2. IA-32의 레지스터 - Intel Architecture .. 2020. 11. 7.
[리버싱 핵심 원리] 3장, 리틀 엔디언 표기법 03C 3.1. 바이트 오더링(Byte Ordering) 데이터를 저장하는 방식 (바이트를 배열하는 방법) 3.1.1. 리틀 엔디언 & 빅 엔디언 1) 엔디언(Endian) : 여러 개의 연속된 대상을 배열하는 방법 2) 리틀 엔디언(Little Endian) : 데이터를 저장할 때 역순으로 저장 [ 특징 ] - 사람이 보기에 직관적이지 않다. - Intel x86 CPU에서 사용 - 산술 연산, 데이터 타입 확장/축소될 때 더 효율적 3) 빅 엔디언(Big Endian): 데이터를 저장할 대 앞에서부터 순차적으로 저장 [특징] - 사람이 보기에 직관적 - 대형 UNIX 서버에 사용되는 RISC 계열의 CPU에서 많이 사용 - 네트워크 프로토콜에 사용 2020. 11. 7.