전체 글

webhacking.kr

[webhacking.kr] old-06

문제분석 & 풀이코드와 계정이 주어진다. 코드를 분석하면 인코딩 , 디코딩 2가지로 나뉜다. "); exit;}인코딩 부분은 "user" 라는 쿠키가 없는 경우 id='guest', pw='123qwe'를 각각 base64 인코딩을 20번 한 후, 그 값들을 replace를 이용하여 여러번의 치환과정을 거치고 각각 "user" , "password" 라는 쿠키에 넣고 있다. view-source");echo("ID : $decode_idPW : $decode_pw");if($decode_id=="admin" && $decode_pw=="nimda"){ solve(6);} 디코딩은 인코딩과 반대로 "user" , "password" 쿠키의 값을 가져와 인코딩과 반대로  replace를 이용하여 여러번의..

webhacking.kr

[webhacking.kr] old-05 (directory listing)

문제분석 & 풀이login, join 2가지 버튼이 존재한다. join을 눌러보니 접근이 불가능하다고 떠서 login부터 시도했다. blind sqli를 하는 문제인가 싶어서 여러가지 방법으로 sqli를 시도해보았지만 wrong password 라고만 뜬다.  디렉토리 리스팅 취약점이 존재하나 싶어서 mem 디렉토리에 접근해보니 접근이 된다. 이전에 접속하지 못한 join.php가 보이는데 접속해보자. "bye" 라는 경고창이 뜨면서 빈 화면만 뜬다. 개발자도구(F12)를 이용해서 코드를 분석해보자. 코드가 난독화됐다. 여러 변수가 선언됐고 복잡한 변수들로 하단 HTML 코드가 작성되어있다. 변수를 각각 대입하여 HTML 코드를 번역해야 할 것 같다. HTML 코드를 번역하면 위와 같이 나온다.  ○ 코..

webhacking.kr

[webhacking.kr] old-04 (rainbow table)

문제풀이40자리 해시가 있고 password를 입력해서 제출하는 구성이다. 새로고침을 할 때마다 해시값이 바뀌는 것을 확인할 수 있다. 조건에 맞는 password를 입력하면 문제가 해결되는 것 같다. 코드를 분석해보자. 1) key(password)가 chall4 세션과 동일하면 문제가 해결된다.2) [10000000~99999999 사이 랜덤값] + "salt_for_you"을 $hash 변수에 저장하고 chall4 세션에 저장한다.3) $hash를 500번 sha1 해싱하고 결과를 화면에 출력한다. 정리하면, 처음에 화면에 출력된 40자리 해시는 500번 해싱한 결과다. 이 값을 이용해서 500번 해싱하기 전의 값인 평문을 알아내야 하는 문제이다. 쉽게 말하면 역으로 복호화해서 값을 알아내야 한다...

keyme
keyme - Security Study