LOS - cobolt 해설

2020. 3. 17. 17:49문제연습/LordOfSql(LOS)

반응형

 

티스토리 블로그는 PC 환경에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

LOS - cobolt 해설

네이버 블로그는 모바일 환경에 최적화되어 있습니다.PC 유저분들은 아래 티스토리 블로그를 이용해 주세...

blog.naver.com

 

안녕하세요, ICMP입니다.

저번 시간에 이어서cobolt를 풀어보도록 하겠습니다.

Injection???

 

 

문제 내용

php 소스코드의 내용을 분석하여 인젝션 공격을 통해 로그인이 성공하도록 인젝션 코드를 작성해야 합니다.

 

문제 해설

일단 제시된 php 코드를 보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
  include "./config.php"
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i'$_GET[id])) exit("No Hack ~_~"); 
  if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"
  echo "<hr>query : <strong>{$query}</strong><hr><br>"
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'== 'admin') solve("cobolt");
  elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>"
  highlight_file(__FILE__); 
?>
 

저번 시간에 설명한 코드와 상당 부분이 유사하므로 이번 코드에서는 저번 시간의 차이점만 알아보도록 하겠습니다.

 

1
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
 

pw가 GET 함수를 통해 입력을 받고 md5라는 해시 함수 안에 들어가는군요.

기본적으로 해시 함수가 사용되었다고 판단되면 전수조사는 불가능에 가까울 가능성이 높을 듯합니다.

 

1
2
  if($result['id'] == 'admin') solve("cobolt");
  elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>"; 
 

조건문이 저번 문제랑 약간 달라졌습니다.

일단 $result['id']가 admin과 일치하면 문제가 풀리고, 만약 아니면 문자열을 출력하고 종료해 버립니다.

아래 사진처럼 말이죠.

 

저번 시간의 gremlin 문제와 다르게 id에 대한 정보를 줬습니다.

즉, id = admin으로 하되 비밀번호를 우회할 방법을 찾는 것이 이 문제의 의도인 것 같습니다.

 

이제 인젝션이 가능한 위치를 확인해 보도록 하겠습니다.

현재 GET 방식으로 입력받는 부분인 id, pw는 임의로 값을 집어넣을 수 있습니다.

그런데 현재 id와 pw가 and로 묶여있어서 pw를 변조하기에는 힘들 것 같습니다.

즉 로그인이 되려면 id를 admin으로 입력받고 뒤에 있는 pw를 무시하도록 하는 방법을 이용해야 할 듯합니다.

(조건문이 무시되게 하려면 주석을 이용하면 되겠습니다.)

 

아래 사진처럼 삽입하면 공격이 성공할 듯합니다.

이렇게 인젝션을 해주면 쿼리 문의 조건을 만족하여 문제를 클리어할 수 있을 듯합니다.

(참고로 #은 인코딩 때문에 %23으로 입력해 주셔야 합니다.)

 

주소창에 이어서 ?id=admin%27%23라고 입력하면 클리어 됩니다.

 

cobolt 클리어!!!

다음 시간에는 goblin를 풀어보도록 하겠습니다.

이상, ICMP였습니다!!!

 

반응형

'문제연습 > LordOfSql(LOS)' 카테고리의 다른 글

LOS - goblin 해설  (0) 2020.03.21
LOS - gremlin 해설  (0) 2020.03.16