eli_ez3r
eli_ez3r
eli_ez3r
전체 방문자
오늘
어제
  • 분류 전체보기 (202)
    • 0x01 끄적끄적 :) (57)
      • Network (5)
      • Security (14)
      • Reversing (2)
      • Forensic (5)
      • Operation System (10)
      • Development (10)
      • Solution (7)
      • 보안 상식 (3)
    • 0x02 Study :) (127)
      • Pwnable (59)
      • Webhacking (56)
      • Reversing (11)
      • Machine Learning (1)
    • 0x03 ETC :) (16)
      • IT Unpacking (5)
      • IT Information (1)
      • Enjoy (4)
      • Etc (6)
    • Admin :) (0)
      • 0x01 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • github.io 블로그 개설

인기 글

태그

  • 과정
  • web
  • 해커
  • 암호
  • Up
  • hack
  • buffer
  • 메모리
  • 문제풀이
  • 풀이
  • hakcing
  • school
  • overflow
  • hacking
  • LOB
  • webhacking.kr
  • 설명
  • hacker
  • 스쿨
  • 문제
  • password
  • 오버플로우
  • LEVEL
  • 패스워드
  • write
  • 해킹
  • attack
  • 공격
  • BOF
  • pwnable

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

[LOS]Level2 cobolt 문제풀이
0x02 Study :)/Webhacking

[LOS]Level2 cobolt 문제풀이

2017. 3. 4. 14:02


[*] SQL Comment Attack


SQL 쿼리를 가장 쉽게 정복할 수 있는 방법 중에 하나는 바로 주석을 이용하는 것이다.

MySQL에서 많은 종류의 주석이 쓰이는데, 공격에 많이 쓰이는 주석을 소개하겠습니다.

1. -- (MySQL기반)

2. # (%23 : 오라클기반)

3. /*

4. //

5. (주석은 아니지만 쿼리를 바로 끝낼 수 있는것) %00



<?php
 include "./config.php"; 
  login_chk();
  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 "
query : {$query}

"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id'] == 'admin') solve("cobolt"); elseif($result['id']) echo "

Hello {$result['id']}
You are not admin :(

"; highlight_file(__FILE__); ?>


7번째줄을 보면 gremlin문제와 비슷해보이지만, pw부분에 md5()함수로 패스워드를 해싱하는것을 볼 수있다.


10번째줄을 보면 id의 값이 admin이면 cobolt가 풀리는것 같습니다.


즉, 패스워드값을 확인 안한다.


gremlin문제와 같이 id값에 admin을 넣고 pw부분을 주석처리 해보겠습니다.



id값 : admin%27--%20 (%27은 싱글쿼터('), %20은 공백, 주석은 '--')


id값 : admin%27%23 (%27은 싱글쿼터('), %23은 '#')


너무 쉽게 풀렸습니다. 혹시 admin말고 id값도 무조건 참으로하면 어떻게 될까하고 값을 넣어봤습니다.



"Hello rubiya You are not admin :(" 이라고 출력되네요..





[또 다른 풀이]


이번에는 md()함수를 무력화 시키는 방법으로 문제를 풀어보자.


id값은 'admin'을 넣고, pw값에 '1'을 넣어보자.


위 그림과 같이 pw값에 '1'을 넣으면 md5()함수 안에 값으로 들어간다.


pw값을 무조건 참으로 만들려면 md5()함수를 먼저 무력화시켜야 한다.


pw값에 ') 값을 입력해보자.



')를 집어넣게 되면 md5()함수가 닫히고, 그 뒤에 우리가 원하는 값을 집어 넣을 수 있게 된다.


그럼 gremlin문제처럼 pw를 무조건 참으로 만들어보자.



맨 뒷부분에 ')이 거슬린다. 저부분은 주석처리해주자.





저작자표시 비영리 변경금지 (새창열림)
    '0x02 Study :)/Webhacking' 카테고리의 다른 글
    • [LOS]Level5 wolfman 문제풀이
    • [LOS]Level4 orc 문제풀이
    • [LOS]Level3 goblin 문제풀이
    • [LOS]Level1 gremlin 문제풀이
    eli_ez3r
    eli_ez3r

    티스토리툴바