전체 글 105

[webhacking.kr] webhacking.kr 03

3번 문제에 들어갔더니 nonogram이 나왔다. 5x5로 돼있는 표 부분을 선택하면 검정색으로 변한다. 위에 적혀있는 문자들은 선택할 블록의 개수를 나타내고 있다. 숫자에 따라서 블록을 선택을 하였다. 블록을 선택한 모습이다. 선택을 한 후 solved를 눌러보았다. solved를 눌렀더니 나온 창이다. enter your name for log라는 문구와 함께 입력칸이 있었는데, tjd과 dfs라는 임의의 값을 넣어보았다. 두 임의의 값을 넣은 후의 화면에는 name, answer, ip의 정보가 누적돼서 뜨는 것을 알 수 있다. 이를 해결하기 위해 코드를 보았더니, hidden 속성으로 answer변수를 post형식으로 전달한다는 것을 알 수 있다. 어떤 값을 입력하여도 참으로 돼서 Clear하기 ..

[webhacking.kr] webhacking.kr 01

1번 문제에 들어갔을 때의 화면이다. view source - 소스 코드 $_COOKIE[‘user_lv’]>5코드 부분을 확인해 보면 cookie의 값이 5보다 크면 solve함수를 통해 해결됨을 알 수 있다. 근데 그 위에 있는 코드를 보면 cookie값이 6보다 작거나 같으면 cookie값을 다시 1로 지정함을 알 수 있다. 따라서 cookie의 값은 5이고 해당되는 값을 지정해주면 해결이 될 것 같다. 현재 페이지의 cookie값 : 1 해당 페이지의 cookie값 : 5.4 로 지정

CodeEngn.com Basic RCE L18

1) Name이 CodeEngn일 때 Serial 값 구하는 문제 2) 18.exe 실행 - CodeEngn과 임의의 Serial 값 1234 입력 - 실패 3) 올리디버거 - 모든 문자열 확인 - 성공을 나타내는 듯한 Your serial is correct .. 문자열 확인 - 해당 위치로 이동 4) String2, String1이 빈공간, strcmp가 존재 5) 어떤 값을 입력할 경우 이 부분이 채워질 것이라 예상 - 004011EF에 break를 걸고 실행 6) 재실행 후 CodeEngn, 1234 입력 시 String2, String1이 채워짐 (String1 : Serial, String2 : Name을 통해 생성된 값) 7) 두 값을 비교 - Name이 CodeEngn일 때 Serial 값..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L15

1) Name이 CodeEngn일 때 Serial 구하는 문제 2) 15.exe 실행 -- Name에 CodeEngn, Serial에 1234 입력 - Try Again 출력 3) 올리디버거 - 모든 문자열 확인 - You cracked the UBCCrackME#1... - 해당 위치로 이동 4) [CMP EAX, DWORD PTR DS:[45B844]] : EAX와 DATA영역의 45B844 주소부터 4byte만큼의 값을 CMP를 통해 비교 5) JNZ이 있는 00458837에 break를 걸고 실행 - CodeEngn과 1234를 입력 6) 값을 입력 시 EAX에 “1234”가 저장이 된 것을 확인 - 구하려는 Serial 값이 45B844부터 4Byte라는 것을 알 수 있음 7) Follow in..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L11

1) OEP와 StolenByte를 구하는 문제 2) 11.exe 실행 화면 3) PEiD를 통해 확인 - UPX 패킹 4) upx.exe를 통해 UPX 언패킹 진행 5) (언패킹된 11.exe) 올리디버거 - NOP로 채워져 있음 6) StolenByte에 해당하는 POPAD, JMP 사이에 있는 PUSH 부분 코드 확인 7) (언패킹된 11.exe) StolenByte 복구 8) StolenByte 복구되면서 0040100C였던 OEP가 00401000으로 변경 9) new11.exe : 복구된 파일 덤프 10) new11.exe 정상적으로 실행 확인 11) 정답 코드 : OEP + StolenByte = 004010006A0068002040006812204000

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L10

1) OEP를 구하고 '등록성공'으로 가는 분기점의 OPCODE를 구하는 문제 더보기 ※ OPCODE : 연산코드, 프로세서가 수행할 연산과 실행할 동작을 정의하는 코드 - 올리디버거로 열었을 경우 Hex dump에 해당되는 코드들이 OPCODE 2) 실행 시 Name, Serial 값 입력 불가능 3) PEiD - ASPack 패킹 되어있는 것 확인 4) 올리디버거를 통해 직접 ASPack 언패킹 진행 5) Find command 를 통해 retn 0c 검색 6) RETN 0c 아래 있는 두 줄에 BP를 걸어주고 실행(F9) 7) 실행 시키면 PUSH 뒤에 OEP 주소로 변경, RETN을 통해 OEP로 이동 8) OEP 부분으로 이동 후 Ctrl + A - 원래 코드 확인 9) 언패킹 완료 10) 언패..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L09

1) StolenByte를 구하는 문제 더보기 ※ StolenByte : 패커가 위치를 이동시킨 코드로써 보호된 프로그램 코드의 윗부분 - 이동된 코드들은 OEP 주소로 점프하기 전에 PUSH가 된다. UPX패킹이 되어있는 프로그램에서는 마지막 JMP를 하기 전 POPAD 이후의 PUSH를 해주는 코드이다. StolenByte를 복구하지 못하면 위와 같이 정상적으로 작동하지 못한다. 2) 09.exe 실행 화면 3) PEiD를 통해 UPX로 패킹되어 있는 것 확인 4) upx.exe로 언패킹 진행 5) 언패킹 후 실행 화면 - 글씨 깨짐 6) 올리디버거(언패킹 09.exe 실행) - OEP 주소 쪽이 NOP로 채워진 것을 확인 - StolenByte가 있어야 하는 부분으로 유추 7) UPX 패킹 되어 있..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L08

1) OEP 구하는 문제 2) 08.exe 파일 실행 시 나오는 화면 3) PEiD를 통해 정보 확인 시 UPX 패킹이 되어 있는 것 확인 더보기 ※ UPX 패킹 파일 1. UPX 패킹 파일 구조 [SECTION UPX0] : 메모리가 로드 된 후 압축 코드가 해제 될 공간 [SECTION UPX1] : 압축코드가 저장되어 있는 공간 2. 올리디버거를 통해 OEP 확인 [PUSHAD] - 코드 - [POPAD] - [JMP] [PUSHAD] : Stack에 레지스터에 있는 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI 총 8개 값을 넣어주는 명령어 [POPAD] : stack안에 있는 8개의 레지스터를 거꾸로 빼오는 명령어 4) PUSHAD와 POPAD 사이에 있는 코드 중 루프문..

CodeEngn 2023.12.22