전체 글 121

[LOS] Level 1(gremlin)

제시된 php는 다음과 같습니다. 여기서는 id와 pw를 GET을 통해서 받은뒤 검증과정을 통과해야만 풀리는 문제로 보입니다. id와 pw가 DB에 있는 정보와 일치해야만 하는데 여기서는 id만을 이용해서 검증과정을 통과할수 있습니다. id=aaa' or 1=1 --%20 다음과 같은 쿼리문을 url을 통해서 보내면 id는 임의의 값으로 전송되고, or 1=1을 통해서 id에 임의의값을 넣더라도 or 뒤에있는 구문이 참이기 때문에 이 조건문은 참이 됩니다. 그렇기 때문에 id값을 모른다 하더라도 통과가 가능합니다. 그 뒤에 pw에 대한 검증은 "--"와 같은 주석을 통해서 없는 코드 취급을 할수 있습니다. 그리고 주석은 앞뒤에 공백이 있어야만 제대로 작동하기 때문에 공백을 써야하는데 url에서는 뒤에 문..

[XSS game] Level 6

이번 레벨이 마지막 레벨인데, 그만큼 난이도가 있어보입니다. 우선 살펴보면 응용 프로그램이 실행되도록하는 외부 파일을 불러오는 사이트로 보입니다. 웹사이트의 설명을 보면 악성 URL에 대한 필터링은 따로 없는것으로 예상되고 공격벡터도 URL이 유일해 보이므로 URL을 중점적으로 분석해보겠습니다. https://xss-game.appspot.com/level6/frame#/static/gadget.js 다음과 같은 URL에 들어갔을때 자바스크립트가 다음과 같은 동작을 합니다. 마지막에 오는 자바스크립트인 부분을 보면 URL에서 # 뒤에오는 경로가 자바스크립트에 올라가는것을 볼수 있습니다. 그러므로 # 뒤에오는 부분을 통해서 웹사이트에 alert를 삽입하는것을 목표로 해야합니다. 일단 이 사이트에 alert..

[XSS game] Level 5

이번에 주어진 웹사이트는 베타를 등록하기 위해서 이메일을 보낼수있게 해주는 사이트 입니다. 일단 웹사이트를 둘러봤을때 공격벡터는 URL과 Enter email칸으로 유추해볼수 있습니다 소스코드를 분석해보면 Enter email 칸에 이메일을 입력한후 Next를 누르면 confirm 웹사이트로 넘어가는것을 확인할수 있습니다. 여기서 URL을 확인해보면 .../signup?next=confirm 이라는 방식으로 되있는것을 확인할수 있고 Next 버튼을 눌렀을때 .../confirm 으로 넘어가는것을 통해서 next= 다음에 오는 값을 조작하면 a href 태그에 들어가는 값을 조작할수 있을것이라고 유추해볼수 있고 실제로 값을 welcome으로 조작해보면 다음과 같이 Next 버튼을 눌렀을때 넘어가는 주소가 ..

[XSS game] Level 4

이번 웹사이트는 타이머를 동작시킬 시간을 10으로 입력하면 다음과 같이 타이머가 10초동안 동작하고 시간이 끝나면 Time is up! 이라는 메세지가 출력됩니다. 공격벡터는 2가지로 생각됩니다. 이 스크립트는 웹사이트의 타이머가 구현된 자바스크립트입니다. 숫자가 입력되면 그 숫자만큼 타이머가 작동하는 방식인데 소스코드를 보면, img 태그를 통해서 로딩 gif 파일이 불러와지면서 입력된 숫자를 onload 이벤트처리 태그를 통해서 startTimer 함수로 보내는 방식입니다. 이 부분을 보면 10이라는 숫자는 클라이언트 상에 그대로 전달되기 때문에 이 부분을 통해서 스크립트를 삽입할수 있을것이라고 가정하고 작성해보면 10'); alert('1 다음과 같은 코드를 작성할수 있는데 이 코드를 숫자를 입력하..

[XSS game] Level 3

이번에 주어진 웹사이트는 이미지 3개가 업로드되있고 이미지 1,2,3 버튼을 누르면 그에 맞는 이미지를 불러오는 방식 입니다. 페이지 소스를 확인해보면 다음과 같은 자바스크립트 코드를 확인해볼수 있습니다. 코드 중에서 다음과 같은 부분을 확인해볼수 있는데 이 부분을 보면 URL이 클라이언트 상에서 어떻게 받아들여지는지 추측해볼수 있습니다. html 변수는 Image+parseInt(num) 이후에 HTML 태그를 통해서 이미지를 불러오는것을 확인할수 있는데 여기서 URL을 통해서 이 HTML 태그를 조작해서 num 변수 부분을 조작할수 있을것이라고 추측해볼수 있습니다. 그러므로 num 부분을 onerror 이벤트처리 태그를 사용해서 alert를 삽입해본다면 https://xss-game.appspot.c..

[XSS game] Level 2

이번에 주어진 웹사이트는 간단한 게시판 사이트입니다. 먼저 저번 레벨에서 썼던 스크립트를 다시한번 넣어보면 다음과 같이 웹사이트에 별다른 반응이 없는것을 확인할수 있습니다. 소스코드를 살펴보면 게시물이 blockquote라는 태그로 둘러쌓여있는것을 볼수 있습니다. 이 HTML 태그는 주로 웹사이트에서 들여쓰기를 해야하는 경우가 생길때 쓸수있는 태그입니다. 이로 인해서 script태그가 막혀버리기 때문에 다른 방법을 사용해서 xss공격을 수행해야합니다. 이런 경우에는 DOM based xss 라는 방법을 통해서 공격을 시도해볼수 있는데 다음과 같은 스크립트를 게시판에 업로드하면 성공 메세지가 출력되면서 다음 Level로 넘어갈수 있습니다.

[CodeEngn] Basic RCE L02 공부

이번 문제는 다음과 같습니다. 먼저 Exeinfope로 파일 정보를 살펴보면 다음과 같이 PE파일이 아니라고 뜨면서 아무런 정보도 나오지 않습니다. 이 실행파일을 실행시켜보면 다음과 같이 실행이 안되는것을 확인해볼수 있습니다. 실행이 안되므로 동적분석을 진행할수 없기 때문에 HxD를 이용해서 바이너리를 직접 분석해보겠습니다. HxD를 통해서 까보면 다음과 같이 바이너리를 16진수와 Decoded text로 읽을수 있게 해줍니다. 바이너리가 비교적 크지 않기 때문에 한번 천천히 읽다보면 다음과 같은 데이터를 확인해볼수 있는데, 위에있는 부분은 파일 내에서 정의된 함수들로 추정되고 및에 부분은 프로그램이 실행되면서 출력될 가능성이 있어보이는 문자열들로 추측할수 있습니다. 문자열을 살펴보면 "Nope, try..

워게임/CodeEngn 2022.04.14

[CodeEngn] Basic RCE L01 공부

문제는 다음과 같습니다 먼저 Exeinfope를 통해서 살펴보면 다음과 같이, 아무런 패킹이 안되어있고 32비트 프로그램인것을 확인해볼수 있습니다. 프로그램을 실행시켜보면 다음과 같은 창이 뜨고 다음과 같은 창이 뜨면서 프로그램이 끝나는것을 확인할수 있습니다. 프로그램이 어떤 방식으로 돌아가는지 분석하기 위해, x32dbg를 통해서 살펴보겠습니다. 한번 실행시켜보면 EP에서 멈춥니다. 여기서부터 한 단계씩 실행시켜보면서 프로그램의 실행흐름을 살펴보면, "abex' 1st crackme" "Make me think your HD is a CD-Rom" 라는 메세지들이 MessageBoxA함수를 통해서 출력된 후에 "c:\\"라는 드라이브 루트의 이름이 push된 후에 GetDriveTypeA라는 함수가 c..

워게임/CodeEngn 2022.04.14
728x90