webhacking.kr

webhacking.kr

[webhacking.kr] old-56 (Broken Access)

문제분석 & 풀이 테이블이 등장한다. readme를 눌러보면, access denied가 나온다. 아마도 admin의 subject를 구하는 것이 문제인 것 같다. 이번에는 hi~를 눌러보니 hello~라고 뜬다. 다시 돌아가서 메인페이지에는 검색창이 있다. admin, guest 라고 검색해봤지만 아무것도 뜨지 않는다. "hi~" 게시글의 내용이었던 "hello~"를 검색해보니 guest의 레코드가 결과로 나온다. 검색창은 게시글 내용이 포함된 경우에 레코드가 결과로 출력되는 것 같다. 이번에는 h라고 검색했고 2개의 레코드가 나온다. readme, hi~ 모두 h가 들어가는 것 같다. 그렇다면 이 특징을 이용해서 readme의 내용으로 무슨 문자가 들어가있는지 검색해볼 수 있다. 코드를 작성하고 모든..

webhacking.kr

[webhacking.kr] old-55 (sqli → procedure)

문제에 접속하니 점수와 함께 초록모양의 아이콘이 있다. 마우스를 움직이면 점수가 쌓이면서 초록모양 아이콘이 마우스 방향으로 이동한다. rank 링크를 눌러서 들어가보니 순위표가 나열되어있다. 하단을 확인해보니 위와 같은 php 코드가 보인다. 소스를 자세히 보면 insert 문 맨 오른쪽에 $flag 값이 있는 것을 확인 할 수 있다. insert 문을 이용해 DB에 rank를 저장하는데 이때, flag값도 같이 저장하는 것 같다. 다시 돌아와서 순위표를 보면 score 부분에 하이퍼링크가 있어서 눌러보니 id 와 점수가 상단에 뜨는 것을 확인 할 수 있다. 추가적으로 URL 부분을 보니 score 파라미터를 이용해 점수를 보내서 상단에 정보를 출력하는 것을 알 수 있다. 이번에는 score 파라미터 값..

webhacking.kr

[webhacking.kr] old-54

문제분석 & 풀이 문제에 접속하니 Password is 라는 문구와 함께 오른쪽 값 빠른 속도로 바뀐다. 아마 빠르게 바뀌는 이값들의 총집합이 password 이고 이것을 구하는 문제인 것 같다. 개발자 도구를 이용해 소스를 확인하여 answer() 함수를 찾아냈다. answer() 을 분석해보니 파라미터를 이용해 통신을 하여 그 결과 값을 aview 즉, "Password is" 오른쪽 부분에 출력한다. 소스를 자세히보면 aview.innerHTML=x.response.Text 로 되어있어 통신할때마다 화면에 출력되는 값이 바뀌는 것을 확인할 수 있는데 이것을 aview.innerHTML+=x.response.Text 의 형태로 바꾸면 매번 값이 바뀌는게 아니라 값이 쌓이는 형태로 출력이 될 것이다. ..

webhacking.kr

[webhacking.kr] old-53 (sqli -> procedure)

문제에 접속하니 소스만 있어서 바로 소스를 분석해봤다. 1. answer 파라미터 값이 $hidden_table과 같으면 문제 클리어 2. val 파라미터에 select , by 가 들어가면 프로그램 강제종료 3. sql 쿼리를 실행해서 val 값이 $hidden_table 이라는 테이블에 존재하면 화면에 출력 결론적으로 문제를 해결하기 위해서는 쿼리가 실행되는 테이블의 이름($hidden_table)을 알아내야 한다. DB에서 테이블 이름에 접근하기 위해서는 메타데이터 영역에 접근해야 하는데 문제는 select를 사용할 수 없어서 메타데이터에 접근할 수 없을 것 같다. 그렇다면 어떻게 해야 테이블 이름을 알아낼 수 있을까?? 여기서는 테이블 이름을 알아낼 수 있는 다른 방법인 procedure 함수의 ..

webhacking.kr

[webhacking.kr] old-51 (md5)

문제분석 & 풀이 Admin page에 로그인창이 있다. 이번 문제는 admin 계정으로 로그인하는 문제인 것 같다. 오른쪽에 보니 소스가 있어서 소스를 분석했다. 1) id, pw 값을 POST로 받는다. (2번줄) 2) id의 경우 addslashes() 를 통해 이스케이프 처리를 하고 pw는 md5()로 암호화 한다. 3) sql 쿼리를 실행하여 결과 값을 받고 결과값이 존재하면 문제가 클리어된다. 결과값이 존재만 해도 되는 것으로 봐서는 예상대로 admin 계정으로 로그인하는 문제다. 2)번 설명을 보면 id는 이스케이프 처리되기 때문에 인젝션이 불가능 할 것 같다. 이어서 pw는 md5()로 암호화가 되는데 특이점은 5번줄을 보면 md5() 안에 true라는 인자가 추가되어있다. 그렇다면 md5..

webhacking.kr

[webhacking.kr] old-50 (sqli → 주석)

문제분석 & 풀이 sql inejection 문제다. 간단한 로그인 창이 구현됐다. 코드를 분석해보자.

keyme
'webhacking.kr' 카테고리의 글 목록 (2 Page)