전체 글 108

[webhacking.kr] webhacking.kr 12

12번 문제의 첫 화면이다. 소스코드를 확인해보았다. 소스코드가 이모티콘으로 되어있다. 이 코드를 해석하기 위해 마지막에 있는 필요없는 문자열인 (‘_’)을 제외하고 console창에 입력하였다. if문을 보면 ck변수와 enco변수에 의해 추출한 값이 동일하면 password 값을 출력해주는 것 같았다. if문에서는 URL의 =문자부터 문자열을 자른 것을 저장하는 ck변수, 1~122까지의 아스키코드가 저장되어 있는 enco변수, x위치에 저장되어 있는 문자를 return해주는 enco_(x)함수로 이루어져있다. if문 안에 있는 뒷부분을 알기 위해서 if문과 함수 선언 부분을 제외하고 console창에 입력하였다. 위와 같은 코드를 console창에 입력하였다. URL창에 console창에 입력한 코..

[webhacking.kr] webhacking.kr 10

소스 코드를 보면 두 번재 줄에서 O를 클릭하면 오른쪽으로 1px씩 이동하는 것을 알 수 있고 O가 1600px만큼 움직이면 페이지를 ?go=1600px로 이동하는 것을 알 수 있다. 결국 this.style.left의 위치가 1600px이면 되므로 처음에 O가 시작되는 위치를 1599로 지정해 한 번 클릭하면 1600px로 이동할 수 있게 수정하였다. 이와 같이 left값을 1599으로 지정하였다. 그 결과 O가 1599위치로 이동하였고, O를 클릭하면 ?go=1600px가 URL에 나타나면서 성공하였다.

[webhacking.kr] webhacking.kr 07

처음 7번 페이지에 들어갔을 때 나온 화면이다. view-source에 들어가보았다. 소스코드를 보면 GET방식으로 값을 받아 go에 저장한다는 것을 알 수 있고 preg_match를 통해 2, +, =, - 등을 필터링한다는 것을 알 수 있다. 그 밑의 코드들을 보면, data의 값이 2이면 solve됨을 알 수 있다. go값을 2로 맞춰서 lv = 2로 바꿔준다면 해결이 될 것 같다. 근데 위에서 2가 필터링이 되고, =, 사칙연산 등을 필터링하기 때문에 연산을 통해서 2를 만들 수 없음을 알 수 있다. 그래서 아스키 코드와 사용하여 union과 select를 사용해서 쿼리를 작성하였다. 또 rand 함수를 통해서 1부터 5까지 값을 무작위로 받기 때문에 문제가 일어날 수 있지만, 새로고침을 계속 해..

[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