티스토리 뷰
<?php
include "./config.php";
login_chk();
dbconnect();
// prob, _, . , (), #, - 을 필터링
if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~");
// pw 값이 6글자 초과이면 No Hack 출력
if(strlen($_GET[pw])>6) exit("No Hack ~_~");
// 쿼리 실행
$query = "select id from prob_nightmare where pw=('{$_GET[pw]}') and id!='admin'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
// 쿼리의 결과가 있으면 클리어 !
if($result['id']) solve("nightmare");
highlight_file(__FILE__);
?>
18번 Night Mare 의 코드이다.
우선 문제와 관련 없는 문자와, 주석 처리를 할 수 있는 몇몇가지들을 필터링하고있고,
pw의 길이를 6자 초과로 입력하지 못하도록 하고있다.
그리고 쿼리부분을 잘 보면 우리가 사용할 수 있는 변수는 pw밖에 없다.
따라서 pw뒤의 조건절은 무효화될 수 있도록 하며, 6자리의 문자열을 입력하여 쿼리를 실행하여야 한다.
1. 주석에 사용되는 문자가 필터링되고 있는데 조건절을 어떻게 무효화 할 수 있을까?
바로 NUL을 사용하는 것이다.
pw에 %00을 이용하여 여기가 문자열의 끝이다 ~ 라고 표시할 수 있다.
pw=');%00을 입력한다면 아래와 같은 쿼리가 만들어지면서 ; 까지 쿼리로 인식하여 뒤에 있는 조건절은 무효화될 것이다.
select id from prob_nightmare where pw=(''); ') and id!='admin'
2. 6글자가지고 어떻게 인젝션을하지 ...?
이미 우리는 pw 뒤의 조건절을 무효화 하기위해 2글자를 사용했다. 우리에게 남은 총알은 4개 ....
우선 pw에서 필터링 되고 있는 것들을 다시 한 번 확인해보자
prob, _, ., (), # -
'와 )가 필터링안되고 있는 것을 확인할 수 있다.
우선 입력값 앞에 열려있는 홑따옴표와 괄호를 닫아주어야 우리가 조건을 추가할 수 있다.
이렇게 또 2개의 총알을 사용했다.
이제 어떻게 조건문을 참으로 만드느냐... 인데 이 케이스는 이전에 webhacking.kr 문제를 풀며 본 적이 있다.
조건절을 위와같이 1=2=3 으로 입력을 한다면
(1=2) 거짓 , (2=3) 거짓
(거짓 = 거짓) 참
거짓을 이용하여 참을 만들 수 있는 것을 볼 수 있다.
따라서 괄호를 닫아준 뒤 거짓이 되는 조건을 달아준다면 최종적으로 조건이 참이되어 클리어가 될 것이다.
?pw=')=0;%00
위와 같이 입력하면 클리어 ~!
'워게임 > Lord of SQL injection' 카테고리의 다른 글
[LOS] 20번. dragon (0) | 2019.05.24 |
---|---|
[LOS] 19번. Xavis (0) | 2019.05.24 |
[LOS] 17번.Succubus (0) | 2019.05.12 |
[LOS] 16번.ZOMBIE ASSASSIN (0) | 2019.05.10 |
[LOS] 15번. ASSASSIN (0) | 2019.05.10 |
- Total
- Today
- Yesterday
- webhacking.kr 58번
- SuNiNaTaS 4번
- SuNiNaTaS 7번
- Cent OS8
- 패스워드 파일 보호
- SuNiNaTaS 22번
- SuNiNaTaS 6번
- SuNiNaTaS3번
- 써니나타스 7번
- 써니나타스 4번
- 써니나타스3번
- SuNiNaTaS 8번
- SuNiNaTaS2번
- 써니나타스 22번
- webhacking.kr
- 써니나타스
- 써니나타스2번
- 패스워드 복잡도 설정
- suninatas1번
- 써니나타스 23번
- SuNiNaTaS 23번
- webhacking.kr 42번
- Suninatas
- 계정 잠금 임계값 설정
- 써니나타스 8번
- Cent OS 8
- 써니나타스 6번
- Webhacking.kr 회원가입
- Root원격접속차단
- 해시 디코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |