본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-

Study/webhacking.kr20

webhacking.kr 26번 문제 안녕하세요 ㅎㅎ : ) webhacking.kr 26번 문제 풀이 하겠습니다. 일단 php 코드를 확인하면 GET파라미터 id 를 입력 받아 admin과 비교합니다. (eregi 함수 사용)그 후 urldecode를 한 id 값이 admin과 일치 하면 solve를 줍니다. 저는 처음에 eregi 함수 취약점 인줄 알았는데 ㅠ아니였습니다. (%00admin) 힌트는 urldecode에 있습니다. 저는 처음에 admin을 urlencode 해서 보내면 첫 번째 if 문을 우회 할 수 있지 않을까 했습니다. url encode는 원래 특수문자 등과 같은 문자들만 hex로 바꾸어 주는 건데요text to hex 와 거의 동일합니다.그러므로 admin을 url encode 한 값은 아래와 같습니다.%61%64%.. 2017. 6. 13.
webhacking.kr 25번 문제 안녕하세요 : ) webhacking.kr 25번 문제 풀어 보도록 하겠습니다. URL?file=hello 이라고 되어 있습니다.그러면 hello.txt의 내용을 출력해 줍니다.이 말은 file="파일명" + ".txt"확장자를 자동으로 붙여준다는 것을 유추 할 수 있습니다.(저는 알아 차리는데 많이 오래 걸렸네요 . ㅠ) 아무튼 그러면 password.php를 읽기 위해서는 뒤에 붙는 .txt를 무시해야 합니다.그렇기 위해서는 %00(NULL)을 이용하여 .txt를 무시 할 수 있습니다. 2017. 6. 13.
webhacking.kr 23번 문제 안녕하세요 : ) 이번에는 webhacking.kr 23번 문제를 풀어보도록 하겠습니다. 문제 설명을 보면 를 입력하면 됩니다. 근데 문제는 따른 필터링이 있는 것이 아니라 바로 문자를 연속으로 사용하지 못한다는 것 입니다. 2017. 6. 13.
webhacking.kr 21번 문제 안녕하세요 :) 오늘은 webhacking.kr 21번 문제를 풀어 보도록 하겠습니다. 정말 깔끔하게 BLIND SQL INJECTION이라고 명시가 되어있습니다. 기본 파라미터로는 no id pw가 있는데요저는 no 파라미터만 이용하여 문제를 풀었습니다. sql injection을 기본적으로 알고 있다는 전제 하에 문제 풀이를 하겠습니다. no를 1,2,3,~ 해보면 no가 1과 2가 존재한 다는 것을 알 수 있습니다.그러면 이 두가지의 pw을 알아내는 것이 최종 목표입니다. 저는 간단한 sqlinjection을 이용하여 pw를 알아냈는데요 URL?no=1 and ascii(substr(pw,1,1))=97위의 쿼리를 이용했습니다.해석을 해보자면 substr이라는 함수를 이용해서 pw의 글자 하나를 추.. 2017. 6. 13.
webhacking.kr 18번 문제 안녕하세요 오늘은 webhacking.kr 18번 문제를 풀어보도록 하겠습니다.이번 문제는 약간 풀 때 이상했던 점이 있는 문제였습니다. 일단 아래는 소스코드입니다. sql injection을 통해 query의 반환 값이 admin이면 @solve()를 줍니다.제가 생각 했던 query는 id='guest' and no=-1 or id="admin"입니다. 근데 이상하게 이 반환값을 admin으로 안주더라고요흠.. 왜 그런지는 잘 모르겠습니다만. 문제 풀이 방법은 no를 이용하여 푸는 문제입니다.no=1일 때는 guest를 출력 해주는데no에 2를 넣으면 solve를 줍니다. 필터공백 필터 우회 %0a query문 해석id='guest' and no=-1 or no=2위의 쿼리를 해석하면(id가 gues.. 2017. 6. 13.
webhacking.kr 17번 문제 풀이 안녕하세요 :) 이번에는 webhacking.kr 17번 문제 풀이를 하도록 하겠습니다. 일단 소스코드를 확인하면 아래와 같이 출력되는 것을 확인 할 수 있습니다. 엄청나게 많은 연산을 합니다 더하고 빼고 곱하고 나누고 등등function sub()를 확인해보면 unlock(연산 결과값)과 입력값이 같을 시에 password를 출력해줍니다.(unlock/10)사실 굳이 입력을 하지 않아도 unlock을 구한후 10으로 나눈 값이 password임을 알 수 있습니다. 물론 음.. 계산기를 통해 계산하기는 무리가 있겠죠? 브라우저의 console기능을 이용하여 ctrl+c, ctrl+v ㅎㅎ :) 입력을 해보면 예상 되로 값에서 10을나눈 것이 password라고 출력 해줍니다. 2017. 6. 13.