WarGame 23

Webhacking.kr(old) 4번

웹케알이 리뉴얼 되었다. 너무 옛날 버전의 취약점은 약간씩 고쳐지고 문제의도를 잘 모르겠는 문제들도 개편되었다. 4번도 이에 해당된다. 기존문제는 base64로 인코딩된 값을 풀어 나오는 sha1의 값을 rainbow 테이블로 찾아내면 되는 문제였다. sha1의 레인보우 테이블은 웹에서 지원하는 경우가 많기 때문에 쉽게 찾을 수 있었지만, 리뉴얼 되면서 의도된 바는 레인보우 테이블이 어떻게 만들어지는 지에 대한 원리를 직접 느껴보길 바라는 의도인 것으로 보인다. 바뀐 문제를 풀어보자. Password [view-source] $hash = rand(10000000,99999999)."salt_for_you"; 10000000에서 99999999 사이의 숫자를 하나 뽑아 salt_for_you와 합친다. ..

webhacking.kr 42번 풀이

webhacking.kr 42번 풀이 [HINT] 1. Base642. File Download3. Brute Force Attack 페이지에 접근하면 두개의 다운로드 링크를 볼 수 있는데, read me 의 test.zip은 다운 경로가 없고 권한이 없다는 메세지를 띄우는 JS코드가 박혀있다.test.zip을 열어보는 것이 목표일 것이다. test.txt의 다운로드 URL을 보면 파라미터로 base64의 값을 보내는 것을 확인 할 수 있다. 이는 test.txt의 base64 encode한 값이다.예상으로 파라미터를 test.zip의 base64 encode한 값을 넣으면 다운 받을 수 있을 것 같다. test.zip을 base64 인코딩 한 값은 dGVzdC56aXA= 이고, 이를 파라미터에 넣으면 ..

webhacking.kr 18번 풀이

webhacking.kr 18번 풀이 간단한 인증우회 문제 [HINT] 1. SQL Injection2. space bypass no를 get 파라미터로 받는다.no는 특정 문자열이 들어가있으면 필터링하고들어가있지 않은 경우, sql query를 요청한다. 반환값으로 admin이면 문제를 풀 수 있다. table에 있는 값은 1이 guest, 2가 admin이다. where 조건문의 id가 guest로 고정되어 있으므로 no에서 sql injection을 시도하여 admin 값을 반환하게 한다.간단하게 2 or 1=1로 시도했다. 참고로 int형의 컬럼에 조건문을 걸 때는 싱글쿼터 등의 구분자를 적지 않고 숫자만을 입력할 수 있으니int형의 컬럼 조건문에 sql injection을 걸 때에는 싱글쿼터가 ..

[LOB] orc

개인적으로 RET 함수 뒤에 쉘 코드를 써 내려 가는 방법을 배웠던 적이 있어서 goblin 문제보다 쉽게 풀 수 있었다. 소스코드 분석 프로그램은 인자로 입력값을 받고, 환경변수에 쉘 코드를 삽입하는 방법을 방지하기 위해 환경변수를 0으로 덮어 씌워버린다.그리고 인자 값의 48번째 값이 \bf가 아니라면 프로그램을 종료한다. 다른 쉘 코드 삽입 방법이 많지만 스택에 쉘 코드를 삽입하여 문제를 풀라는 의미인 듯 하다. 위의 조치를 다 하면 strcpy 함수를 통해 buffer에 입력 값을 복사하고 출력한다. 문제 풀이 argv[1][47] != '\xbf'' 로 인해 48번째 값이 \xbf가 들어가야 프로그램이 도중 종료되지 않는 것을 확인 할 수 있다.덤으로 Segmentation fault가 발생한다..

[LOB] goblin

소스코드 분석 cobolt 문제와 비슷하게 16byte 크기의 buffer가 존재하므로 같은 방법을 이용해도 괜찮을 듯 하다.다른 점은 이번 문제에선 인자로 받지 않지 않는다. 이는 인자값을 넘기는 `` 대신 다른 명령을 통해 해결할 수 있다. 문제는 stdin이라는 힌트다. cobolt와 같은 방법을 했는데 쉘을 따지지 않는데 이유를 알려면 시스템 적인 배경지식이 어느정도 있어야 알 수 있는 듯하다. 아직까지도 완벽한 이해는 하지 못했다. 문제 풀이 여러가지 방법이 있겠지만, 쉘 코드의 주소로 이동하는 데에는 cobolt와 별 다른 차이점이 없으므로 환경 변수와 NOP Sled 기법을 이용한다. 환경변수는 프로그램을 만들어 출력했다. 위치는 0xbffffea8임을 알 수 있다.인자 값이 아닌 프로그램의..

webhacking.kr 34번 풀이

webhacking.kr 34번 풀이 문제 자체를 푸는데 있어서는 왜 이렇게 높은 배점이 책정되어있는가 조금 의문이 들 정도로 무슨 의도인지 모르겠는 문제 [HINT] 1. JavaScript2. 난독화(????) 문제에 접근하면 Wrong이라는 메세지 박스가 뜨고 검은 화면밖에 보이지않는다.페이지의 소스를 보면 난독화가 되어 있다. 글자는 왜 깨져있는지 모르겠다. 하지만 개발자 도구로 보게 되면 언패킹 된 JS코드가 보이게 된다.url에 0lDz0mBi2라는 문자열이 있으면 Passw0RRdd.pww 페이지로 이동하고 아니면 메세지 박스를 띄운다. 난독화 문제인데 왜 소스 코드 막 줄에 구지 언패킹 된 소스를 노출시킨건지 이해가 되지 않았다.바쁜 웹 해킹.kr 개발자의 의도는 지금은 잘 알턱이 없고 난..