Beistlab for security라는 창이 나온다.…beistlab이 낸 문젠가..?

일단 메인 창 내에서는 별 문제가 없는 것 같다. 근데 메인 창 목록에는 about, members, research, board, fun stuff, contact밖에 없는데 코드상에서는 admin이라는 것도 보인다. 저기에 들어가보면 (map태그로 용 머리에 링크를 걸어놔서 용 머리를 누르면 admin페이지로 넘어갈 수 있다….)

로그인하라는 창이 나온다. 아무거나 치니까 나오지도 않는다이제부터는 웹알못으로 아무것도 모르므로 구글의 도움을 받았다.

아까 main코드에서 이러한 시간 주석이 있는 것을 확인할 수 있다. 이 값이 cookie랑 연관이 있다고 한다.

쿠키를 보면 time이라는 이름을 가지고 있다. 이것 때문에 그 주석과 연관이 있다고 바로 생각 할 수 있던 것 같다.그 후에 이를 이용해서 blind sql injection공격을 했다. Blind sql injection은 일반적인 SQL과는 다르게 악의적인 문자열을 삽입하지 않고 참과 거짓을 확인할 수 있는 쿼리를 삽입하여 정보를 취득하는 방법이라고 한다.  참과 거짓의 서버 반응을 보고 공격을 수행하는 형식이다.

쿠키값을 이런식으로 바꿔서 쿼리를 true로 만든 후에 코드를 다시 확인해보면

이렇게 시간이 바뀌어서 나오는 것을 확인할 수 있다!! 이번에는 false로 바꾸어서 확인해보면

이번엔 9시로 시간이 바뀌어서 나온다!!!!

True -> 09:00:01

False -> 09:00:00

라는 것을 알 수 있고 이제 이걸 이용해서 password를 알아내면 된다! 어떤 식으로 해야할지 뭔가 대충 감이 잡혔다..!

Board를 보면 게시글 하나가 올라와 있는 것을 알 수 있는데 비밀 글이라고 한다. 뭔가 이 비밀번호를 알아내야 할 것 같다는 느낌이 강하게 왔다..! 

근데 table이름을 알아야 password를 알아내는데 아무리 뒤져도 찾을 수가 없어서 다시 구글의 도움을 받으니까 예전에는 테이블명이 힌트로 주어졌었다고 한다..! 왜 힌트가 사라졌지Board table name è FreeB0aRdAdmin table name è admin 

이제 테이블 이름도 알아냈으니까 password를 확인해보자. 보통 이런 암호는 8자리나 4자리니까 8자리부터 확인을 해봤다.

board내에서 input값이 password니까 비밀번호가 들어있는 곳은 password라고 추측하고 확인을 하였다.

(select length(password) from FreeB0aRd) >= 8 è password길이를 FreeB0aRd table에서 조회

참이다 그럼 8부터 차례대로 검사해보자.

8은 아니라고 한다.

9자리로 검색하니까 참이다! 이제.. 한자리씩 비교해가면서 확인해야 되는데..

 

(select ascii(substring(password, 1, 1)) from FreeB0aRd) = 97

 

이런식으로 한자리씩 확인해보면 된다..!ascii함수는 문자열의 제일 왼쪽 문자를 ascii코드로 변환해주고 substring함수는 지정된 숫자를 기준으로 지정된 자리만큼 문자열을 자른다. Substring(문자열, 시작인덱스, 길이) 형식이다. 

 

스크립트를 짜보자.

 

이런식으로 길이도 자동화 시킬 수 있다.

FreeB0aRd password : 7598522ae

admin manual이라는 zip파일이 있었다. 파일을 열려고 하니까 암호를 입력해야 했다. 아마 admin의 암호인 것 같다..! admin암호도 똑같은 방식으로 알아내보자.

admin password : 0nly_admin

이게 파일의 암호는 아니다. 아까 봤던 admin페이지로 돌아가서 비밀번호를 입력해보자.

암호가 나온다! 패스워드를 입력하자.

html을 열어보니까

암호가 나온다~ HacKed_by_n0b0dY

'web > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] level 1  (0) 2019.06.30
[webhacking.kr] join  (0) 2019.06.29

까만 화면에 저것만 떠서 막 눌러보다가 index.phps를 누르니까 페이지가 바뀌었다. level1페이지 소스코드를 보니까

<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<br>level : 1<br>
<pre>
<a onclick=location.href='index.phps'>----- index.phps -----</a>
</body>
</html>

Onclick으로 되어 있었다. 클릭시 발생하는 이벤트라고 한다. 아까처럼 링크로 직접 접속해도 된다!

이런 페이지 소스가 나온다. 느낌상 $password=”????”; 이 부분 이후가 중요한 부분인 것 같다. 대강 코드를 보니까 COOKIE라는 애가 매우 많이 나온다. 마지막 if문에서 COOKIE5보다 크면 solve()가 되는 것을 보니까 COOKIE값을 5보다 크고 6보다 작은 수로 만들어주면 될 것 같았다.

‘Edit this cookie’ 이 프로그램을 이용하면 쿠키값을 변환시킬 수 있다고 한다.

이 프로그램을 이용해서 쿠키값을 5.5로변환시켜주면

성공이다!

소스코드를 조금 분석해보면 다음과 같다.

if(!$_COOKIE[user_lv])  user_Iv에 cookie값이 없다면 if문을 수행!
{
    SetCookie("user_lv","1");  SetCookie함수를 사용해서 user_Iv쿠키를 1로 세팅한다.
    echo("<meta http-equiv=refresh content=0>");
}

$password="????";  flag값이 저장되는 변수라고 한다.

if(eregi("[^0-9,.]",$_COOKIE[user_lv]))  eregi함수(문자열 검색)를 이용해서 user_Iv cookie값이 0~9로 시작된다면 if문이 수행되고 아래에서 1로 세팅 된다.
    $_COOKIE[user_lv]=1;

if($_COOKIE[user_lv]>=6)  6보다 cookie값이 크면 1로 세팅한다.
    $_COOKIE[user_lv]=1;

if($_COOKIE[user_lv]>5)  5보다 cookie값이 크면 문제가 풀린다!
    @solve();

echo("<br>level : $_COOKIE[user_lv]");  user_Iv cookie값 출력

'web > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] level 2  (0) 2019.07.02
[webhacking.kr] join  (0) 2019.06.29

처음에 사이트에 접속하면 login화면만 나오고 회원가입하는 버튼이 없다. Webhacking.kr은 회원가입부터 문제인 것을 알고 있어서 바로 페이지 소스코드를 확인해봤다.

<!--
Register
===========================================
<input type=button value='Register' onclick=location.href='join/includ2_join__frm__0001.php?mode=af915bd2a3920ecaf13d9847bb4bfa5b' style=width:50pt;height:20pt;border:0;background:black;color:lightgreen></td></tr>
===========================================
-->

소스코드 중간에 이러한 주석을 확인할 수 있었다. Html언어를 잘 모르지만 register을 하고싶으면 저 하이퍼링크로 접속하면 되는 것 같아서

http://webhacking.kr/join/includ2_join__frm__0001.php?mode=af915bd2a3920ecaf13d9847bb4bfa5b

로 접속하니까 register페이지가 나왔다!

이제 가입하면 된다! 근데 decode me를 하라고 하고 뒤에 ==를 보니까 base 64로 인코딩 된 것 같아서 base64 decoder3번 디코딩해보니까 163.152.225.211 가 나왔다.

뭘 뜻하는지 모르겠어서 그냥 submit해보니까

틀렸다고 한다.. 그래서 decode me에 디코딩된 숫자를 쓰고 다시 submit하니까 됐다!

오른쪽 코드를 수정해보면 Register버튼도 나온다. 저거 눌러서 접속도 가능하다.

'web > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] level 2  (0) 2019.07.02
[webhacking.kr] level 1  (0) 2019.06.30

+ Recent posts