GIANT
14번 문제
<?php
include "./config.php";
login_chk();
dbconnect();
if(strlen($_GET[shit])>1) exit("No Hack ~_~");
// $_GET[shit]의 길이가 1보다 크면 안 됨
if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe");
// $_GET[shit]에 공백, \n, \r, \t가 들어가면 안 됨
$query = "select 1234 from{$_GET[shit]}prob_giant where 1";
// prob_giant 테이블에서 레코드 하나를 1234로 select하는 쿼리
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
if($result[1234]) solve("giant");
// 쿼리를 실행한 결과가 존재하면 문제 해결
highlight_file(__FILE__);
?>
이전의 형식과 다른 형식의 문제다!
문제를 살펴보니 from과 prob_giant 사이에 공백없이 $_GET[shit]이 있어 쿼리가 제대로 실행되지 않는게 문제인 것 같다.
따라서 우리는 $_GET[shit]안에 공백을 넣어주면 된다.
%0a를 넣어봤다.
%0a는 \n이므로 실패. \t인 %09나 \r인 %0d도 실패할 것이다
/**/을 넣어봤다.
한 글자 이상이므로 실패
%0c (vertical tab)를 넣어봤다.
성공!
마찬가지로 %0b(form feed)도 성공한다.
'wargame > LOS' 카테고리의 다른 글
[LOS]16번 ZOMBIE ASSASSIN (0) | 2019.08.09 |
---|---|
[LOS]15번 ASSASSIN (0) | 2019.08.09 |
[LOS]13번 BUGBEAR (0) | 2019.08.06 |
[LOS]12번 DARKNIGHT (0) | 2019.08.02 |
[LOS]11번 GOLEM (0) | 2019.07.24 |