728x90
source code
<?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__);
?>
- 필터링되는 문자들은 앞 gremlin에서와 같다.
- 마찬가지로 GET 방식으로 id와 pw를 받아오는데, 이 때 비밀번호(pw)는 md5로 암호화하는 것을 볼 수 있다.
- md5는 128 byte 해시 암호화 함수로, 주로 프로그램과 파일이 원본과 달라지지 않았는지 검증하는 무결성 검사에서 자주 사용된다고 한다!
- id 의 값이 admin일 때 문제를 해결할 수 있다.
solution
더보기
id=admin' %23
- id의 값이 admin인지가 중요하기 때문에 id 값을 admin으로 넣고 작은 따옴표(')로 문자열을 닫아버린다.
- 앞에서와 마찬가지로 %23(#)을 사용해 비밀번호 부분은 주석으로 날린다.
- 비밀번호에 대한 검사로직은 따로 없기 때문에 비밀번호는 입력하지 않고 다 주석처리로 날려버린다.
SMALL
'Web > Web Hacking (Wargame)' 카테고리의 다른 글
[Dreamhack] Carve Party (0) | 2022.04.24 |
---|---|
[HackCTF] hidden (0) | 2021.08.13 |
[HackCTF/Web] 1번. / (0) | 2021.08.09 |
[LOS] 3. goblin (0) | 2021.08.07 |
LOS Gremlin (0) | 2021.08.07 |