Web Hacking

webhacking.kr

[webhacking.kr] old-40 (sqli -> blind)

문제에 접속하니 소스가 따로 주어져있지는 않고 로그인창만 뜬다. 이미 guest라는 계정으로 모든 값이 다 적혀있어서 그대로 로그인을 해봤다.  no,id,pw 파라미터를 통해 값이 전송되며 guest 로 로그인이 성공했다는 표시가 뜨고 이후 몇 초 뒤에 자동으로 로그아웃이 됐다. 로그인창을 다시 봐보니 pw가 5자리가 적혀있고 아마도 guest의 pw는 guest이지 않을까 싶어서 값을 지우고 guest로 입력하여 로그인을 다시해봤다. 로그인이 성공했고 guest의 pw가 guest라는 사실이 확정됐다. DB에 no=1, id='guest' , pw='guest' 라는 데이터가 저장되어있을 것이고 아마 이번 문제는 blind sqli를 통해 admin의 계정으로 로그인하는 문제인 것 같다. select..

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가 처음에 "..

keyme
'Web Hacking' 태그의 글 목록 (10 Page)