일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 활성화함수파이썬
- 알고리즘
- 신경망 학습
- 백준
- 보안
- 신경망구현
- 딥러닝
- 달고나bof
- BOF
- 스트림암호
- C언어알고리즘
- FTZlevel10
- 밑바닥부터시작하는딥러닝
- 파이썬
- 인공지능
- BOJ
- C언어 알고리즘
- c언어
- 딥러닝파이썬
- 소프트맥스함수
- 버퍼오버플로우
- 머신러닝
- 백준알고리즘
- 신경망파이썬
- 8086CPU레지스터
- 정보보안
- 신경망
- 항등함수
- C알고리즘
- 파이썬신경망
- Today
- Total
목록<CTF> (95)
HeeJ's
DOM에 스크립트를 삽입하지 않고 문제를 풀어야 한다고 한다. DOM이란 무엇일까? 더보기 Document Object Model 웹 페이지(HTML)에 대한 인터페이스 1. 뷰 포트에 무엇을 렌더링 할 지 결정하기 위해 사용 2. 페이지의 콘텐츠 및 구조, 그리고 스타일이 자바 스크립트 프로그램에 의해 수정되기 위해 사용 원본 HTML 문서 형태와 비슷하지만 몇 가지 차이점이 있다. - 항상 유효한 HTML 형식이다 - 자바 스크립트에 수정될 수 있는 동적 모델이어야 한다. - 가상 요소를 포함하지 않는다.(ex. ::after) - 보이지 않는 요소를 포함한다.(ex. display : none) signup 링크를 클릭하게 되면 ?next=confirm이라는 요청과 함께 다른 페이지로 넘어가게 된다..
이 화면에서 Create timer를 바로 눌러보았다. URL에 바로 timer=3이라고 GET 방식으로 들어가게 되고, 3초가 지나면 바로 alert 창이 뜨게 된다. 입력값이 URL에 들어가기 때문에 적당한 값을 넣어주면 alert창을 띄울 수 있을 것이다. timer 값을 그대로 두고, '를 닫아준 후, 그 뒤에 alert 문을 다시 연결시켜 보았다. (Inejction) URL도 입력 값으로 바뀌었다. alert 창이 뜨면서 문제를 해결할 수 있다.
문제 화면을 우선 확인해 주었다. 디버거 프로그램을 탐지하는 함수의 이름을 찾는 문제이다. 위의 프로그램을 실행해보았더니, 일정 시간마다 '정상'이라는 문자열을 출력해주었다. 이 프로그램은 디버거 프로그램을 감지한다고 하였기 때문에, 디버거 프로그램으로 위의 프로그램을 열어 실행시켜보았다. 그러자 일정 시간 마다 '디버깅 당함'이라는 문자열이 출력되었다. 함수의 이름을 찾아야 하기 때문에 [Search for]-[All intermodular calls]를 통해 프로그램의 모든 함수의 이름을 살펴보았다. 햠수 명들 중에서, 의심이 가는 함수 이름이 보인다. IsDebuggerPresent라는 함수이다. 이 함수는 안티디버깅 중의 한 방법이다. 위의 함수가 사용된다면, 디버거를 통해 프로그램을 분석할 수 ..
문제를 실행하면 ? 부분에 Flag로 보이는 문자열들이 빠르게 지나가는 것을 확인할 수 있다. 이것을 확인해주고, 바로 소스코드를 확인해주었다. answer() 함수가 중요한 역할을 하는 것 같다. 이 함수를 조작하면 문자열이 전부 나올 수 있도록 할 수 있을 것 같다. 그래서 저 함수 부분을 복사해 다시 문제 화면으로 돌아와 console에 붙여넣어주었다. 그리고 함수를 약간 변형해주었다. 30번째 줄의 aview.innerHTML = x.responseText;에서 문자열을 출력하는 것이라고 생각해 = 대신에 +=을 사용해 주었으며, 33번 줄의 ? 는 필요 없는 부분인 것 같아 전체를 지워주었으나, 그러면 무언가 때문인지 오류가 생겼다. 그래서 조건문 뒤의 실행 부분만 지워주었다. 그리고 실행을 해..
OEP를 구하면 되는 문제기에 바로 디버거로 열어주었다. 역시 PUSHAD로 패킹되어있는 것을 확인할 수 있다. 다른 문제들과 같이 upx를 이용해서 언패킹해준다. 그리고 다시 디버거를 사용하여 열어주면 OEP를 확인할 수 있다.
우선 실행 파일을 실행시킨 후, 예시의 Serial 값을 넣어보았다. 틀렸을 때 나타나는 문자열을 확인할 수 있었다. 디버거로 바로 열어보았다. PUSHAD로 실행이 시작되는 것으로 보아, 패킹된 실행파일이라는 것을 알 수 있다. 이 파일을 우선 언패킹 해주었다. cmd를 관리자 권한으로 실행시켜주어야 언패킹을 할 수 있다. PUSHAD부분이 풀려 명령어들로 나열되어있는 것을 확인할 수 있다. OEP는 프로그램 실행 시작점의 주소를 말한다. OEP는 00401360임을 확인했다. 그리고 Serial 값을 찾기 위해 문자열 검색을 통해 아까 에러 문자열을 찾아가주었다. 분기문 근처에 SERIAL로 보이는 ASCII값을 확인하고, 실제 SERIAL이 맞는지 확인하기 위해 실행파일을 실행시킨 후 값을 넣어보았..
비주얼 베이직에서 스트링 비교 함수의 이름은 vbaStrCmp이다. 위의 실행파일을 분석해보아도, vbaStrCmp 함수가 자주 사용되는 것을 확인할 수 있다.
실행파일이 손상되었다고 한다. 여러 분석 툴들로 열어줄 수 있을지는 모르겠지만, 우선은 그냥 실행시켜보았다. 그냥 실행시키게 되면, 이렇게 앱을 실행할 수 없다는 문구가 뜬다. 이걸 그대로 바로 디버거로 열어보아야겠다. 디버거에서 또한 파일을 열 수 없다. 그래도 파일에 어떤 내용이 들어있는지 알아봐야 하기 때문에 String으로 파일을 확인할 수 있는 HxD로 열어보았다. 실행파일에 사용하는 여러 함수들을 확인할 수 있었다. 이 파일들을 더 살펴보면, password를 찾을 수 있을 것이다. 패스워드로 유추되는 문자열을 획득했다. 위의 값을 입력해 문제를 해결했다.