분류 전체보기

webhacking.kr

[webhacking.kr] old-39

문제풀이빈칸과 코드가 주어진다. ○ 코드 분석1) id에서 \\를 공백으로 ' 를 '' 로 replace3) id에서 15자리만 split4) SQL 쿼리를 실행해고 결과를 가져와 $result에 저장5) result[0]이 1이면 문제 해결 목표는 result[0] == 1 조건을 충족하는 것이다.  SQL 쿼리를 보면, select 문 결과는 항상 1이다. 즉, where문 조건만 DB에 저장된 데이터와 일치하면된다. where 문에서 and 기준 뒷부분을 보면 id='~~ 로 되어있는데 앞에만 ' 가 있을 뿐이고 뒤에는 ' 가 없다. 따라서 id로 ' 를 넣어서 쿼리문이 정상적으로 끝맺음이 되도록 완성해야한다. (안 넣으면 쿼리 에러 발생) 그러나 ' 를 '' 로 치환하기 때문에 일반적인 방법으로 ..

webhacking.kr

[webhacking.kr] old-38

문제에 접속하니 log injection 이라는 제목과 함께 간단한 로그인 창이 구현되어있다. guest 라는 이름으로 로그인을 해봤지만 아무 반응이 없었다. 개발자도구를 이용해 소스를 확인해보니 admin 페이지가 admin.php 라는 사실을 알 수 있었다. admin.php에 접속해보니 IP:[입력한 값] 의 형태로 내가 로그인을 시도했던 기록이 남아있고 "admin"이라는 이름으로 기록을 남겨야한다는 미션이 주어져있다. 결론적으로 처음에 admin으로 로그인을 해서 admin.php에 기록을 남기면 문제가 해결되는 것 같다. 바로 index.php로 돌아가서 admin으로 로그인을 시도해봤지만 admin이 아니라고 뜨면서 거부된다. 단순히 admin으로 입력해서는 해결이 안되고 독특한 inject..

webhacking.kr

[webhacking.kr] old-36 (swp file)

문제분석 & 풀이페이지에 접속하면 위와 같은 문구가 뜬다. 대충 해석을 하면 index.php를 vi 에디터로 작업을 하던 도중에 날아가버렸고 이것을 복구해달라는 내용이다. 이번문제는 사전지식만 있으면 간단한 문제인 것 같다. vi 에디터의 경우 작업중에 갑자기 전원이 꺼져버려도 파일이 완전 날라가지 않고 작업하던 파일이 swap 임시파일로 저장된다! 따라서 index.php.swp 파일이 존재할 것이다! (swap 파일의 확장자는 swp) 확인해보자. 확인해보니 찾을 수 없다고 뜬다. 경로가 잘못됐나 생각했지만 그것은 아니였고 원래 swp 파일은 기본적으로 숨김파일로 저장된다는 사실을 알아냈다. 숨김파일을 의미하는 .을 맨 앞에 붙여서 확인해보자. index.php.swp 파일이 다운로드가 됐다. 이제..

webhacking.kr

[webhacking.kr] old-35 (sqli → insert)

문제분석 & 풀이페이지에 접속하면 빈칸과 코드가 주어져있다. 코드를 분석해보자.1) phone, id 파라미터가 있는지 검증한다. (3번줄)2) phone, id 파라미터가 존재하면 다음을 수행한다. (4~9번줄)2-1. phone 값에 * , / , = , select , - , # , ;   가 들어가면 프로그램을 강제종료한다. (4번줄)2-2. id 값이 5자리를 넘으면 안된다. (5번줄)2-3. id 에 admin이 들어가면 프로그램이 강제종료된다. (6번줄)2-4. 위 3가지 검증을 모두 넘기면 sql 쿼리를 실행하여 새로운 레코드를 DB에 넣는다. (7번줄)3) sql 쿼리를 실행하여 ip값을 가져와 $isAdmin 에 저장한다. (11번줄)4) isAdmin['ip'] 값이 클라이언트의 ip..

webhacking.kr

[webhacking.kr] old-34

문제에 접속하니 디버그하라는 문구가 나온다. 개발자도구(F12)를 켜서 소스를 확인해보니 script 태그에 위와 같이 소스가 있다. 소스를 옮겨서 확인해봐도 들여쓰기가 전혀 안 된 상태로 나오다보니 보기가 까다로웠고결국 자바스크립트 난독화 해제 프로그램을 이용해 난독화를 해제하여 소스를 확인해봤다. 난독화를 해제하니 소스가 보기 편해졌다. 하지만 313줄로 긴 소스였고 여기서 뭘 해야되지?라는 생각이 들었지만 딱히 생각나는 것이 없어서 코드오더링을 쭉 해봤다. 코드오더링을 하던 중에 처음에 페이지에 접속했을때 "debug me"라는 alert창이 떴던 것이 생각났고 alert를 바로 검색해봤다. alert 검색결과 313줄의 소스중 alert가 딱 하나만 존재했고 위 사진에 나온 alert가 처음에 "..

webhacking.kr

[webhacking.kr] old-33

문제분석 & 풀이주어진 코드를 확인해보자. 소스를 보니 GET 방식으로 get 이라는 파라미터를 "hehe" 라는 값으로 전송하면 문제가 해결되는 것 같다. URL을 통해 값을 전송해보니 Next 라는 하이퍼링크가 뜬다. Next를 눌러보니 33-2 단계가 나온다. 아마 33번 문제는 여러개의 스테이지로 나눠져있는 것 같다. 소스를 보니 이번에는 POST 방식으로 post, post2 라는 두개의 데이터값을 전송하면 문제가 해결된다. post 방식으로 값을 전송하기 위해 버프스위트를 이용하여 패킷을 잡아서 POST 방식으로 변경하여 DATA 영역에 값을 넣어서 패킷을 전송했다. 패킷을 전송하니 이번에도 NEXT가 뜬다. 다음문제로 가보자. 33-3번의 소스를 보니 이번에는 myip 라는 파라미터에 PC ..

keyme
'분류 전체보기' 카테고리의 글 목록 (27 Page)