wargame 49

[LOB] cobolt

소스코드 분석 gremlin과 비슷하게 인자 첫번째 값을 buffer에 복사한다. 여전히 취약한 함수인 strcpy를 이용한다.하지만 주석처리된 힌트를 보면 small buffer를 볼 수 있다. cobolt 문제에서는 배열의 크기가 16밖에 되지 않는다. 문제 풀이 cobolt도 역시 strace를 통해 바이너리를 추적하여 ret 주소를 덮어씌우는 위치를 찾아낸다.cobolt에서는 buffer의 크기 16byte + sfp의 크기 4byte를 가져 21byte 째부터 ret 주소를 덮어씌우는 것을 확인 할 수 있다.총 20byte의 쉘코드를 삽입 할 수 있지만, gremlin에서 사용했던 20byte가 넘는 쉘 코드를 사용할 수 없을 뿐 더러 20byte보다 작은 값을 쉘코드를 사용했다 하더라도 NOP..

[LOB] gremlin

소스코드 분석 argc가 2개 미만 즉 인자가 없으면 프로그램을 종료하고, 아니라면 첫 번째 인자 값을 버퍼에 복사한 뒤 출력한다.simple BOF문제이다. 문제 풀이위의 소스에서 보았듯이 BOF문제다. 문제는 strcpy 함수를 사용하고 있기 때문에 BOF가 발생한다.strcpy 함수는 메모리 경계를 검사하지 않아 buffer의 크기보다 큰 길이의 값을 복사하게 되면 buffer를 넘어서 다른 값 까지 덮어씌운다.그렇다면 buffer의 크기를 넘어선 값을 입력하게 되면 무슨 일이 일어나는지 확인해보자. 다음은 gremlin 프로그램에 A를 261개 삽입했을때 strace를 이용하여 바이너리를 추적한 결과값이다. ret 값을 덮어쓰기 시작하여 segmentation fault가 발생한 것을 알 수 있고..

webhacking.kr 14번 풀이

webhacking.kr 14번 풀이 자바스크립트가 어디서 동작하는지만 알면 클리어 되는 문제이다. [HINT] 1. javascript URL을 보면 알 수 있지만, JS, 자바스크립트에 관한 문제임을 알 수 있다.JavaScript와 PHP의 차이라고 한다면 어디서 소스가 실행되느냐를 따질 수 있다. 웹 페이지에서 실행되는 JS의 경우, PHP와 다르게 소스를 클라이언트가 볼 수 있고 그것을 변조할 수도 있다.그러므로 소스보기나 개발자 도구(F12)를 통해 소스를 보게 되면 javascript 구문을 볼 수 있다. 사이에 있는 이 소스가 js 소스이며 문제 페이지에 있는 입력 칸에 적은 값이 ul의 값과 같다면 password의 값을 내놓고 그 값은 ul의 제곱과 같다.(입력 값(pw.input_pw..

webhacking.kr 6번 풀이

webhacking.kr 6번 풀이webhacking.kr의 100점짜리로 매우 쉬운 문제이다.php 소스만 읽을 줄 안다면 약간의 노가다로도 풀어지는 문제고필자도 처음엔 일일이 인코딩해서 풀었다. [HINT] 1. base64 Encoding 문제의 첫 화면을 보게 되면 ID : guest 와 PW : 123qwe 을 볼 수 있다.그리고 HINT인 base64와 php source 파일 링크가 있다. 여기에서 정보는 이 정도이니 phps 파일을 보도록 하자. 소스 파일을 열게 되면 가장 먼저 보이는 소스인데,먼저 문제 풀이에 쿠키를 사용함을 볼 수 있다. 이 소스를 해석하자면만약 user라는 이름의 쿠키가 존재하지 않을 때, $val_id 와 $val_pw인 'guest'와 '123qwe'를 base6..

webhacking.kr 15번 풀이

webhacking.kr 15번 풀이 문제가 매우 쉽고 풀이 방법도 많은 데다가 사실,문제의 답을 대놓고 보여주는 문제답게 점수도 낮다. 이 문제에 대한 풀이가 필요할까 싶다. [HINT] 1. 사륜안(?) 처음 페이지를 들어가게 되면 Access_Denied라고 뜨며 문전박대당하게 된다. 소스를 볼 때면 이미 다 푼 거라 볼 수 있지만, 일단 소스를 보면 javascript의 alert 함수로 Access_Denied를 띄운 뒤, history.go(-1)를 이용해 자신이 이 페이지를 접하기 전의 페이지로 돌아가게 만든다. 이것을 우회할 방법이 여러 개 존재한다. 해당 풀이는 전부 크롬에서 할 수 있다. 1. view-source: 이용하기 크롬은 프로그램 내 특수한 주소명령체계를 이용하는데 그중 하나..

webhacking.kr 1번 풀이

webhacking.kr 1번 풀이 webhacking.kr 의 첫 번째 문제이다. [HINT] 1. 정규표현식 문제의 화면을 보면 검은 화면에 level 그리고 index.phps라는 문자열을 볼 수 있다.webhacking.kr 에서 자주 보게 될 phps 는 PHP Source를 뜻하는 것이며, 이 확장자 명은 설정을 통해 변경 할 수 있다. 단지 PHP 소스를 보기 위해 만든 형식이므로문제나 예제 같은 곳에서 소스를 출력하기 위해는 유용하게 쓰일 수 있지만함수가 사람들에게 보이면 안되는 보안이 필요한 페이지는 PHP Source 기능을 잘 쓰지 않는다. 하여튼, 이 문제에 대해 힌트를 얻기 위해 index.phps로 이동하게 되면 다음과 같은 소스를 볼 수 있다.1번 문제는 PHP 함수와 정규표현..