Web Hacking

저 스크립트를 주입시키면 풀리는 문제인듯 하다. code에 스크립트를 고대로 넣으면 no hack이라 뜨면서 필터링 된것을 볼 수 있는데 어떤필터링인지 몰라 막 넣어봤다. 그런데 문자는 두글자 이상 이어지면 필터링 되는 것 같았다. 그래서 문자가 이어지지 않게 null문자를 끼어넣어서 시도해봤다. 웹에서 null문자는 %00 이다. index.php?code=a%00l%00e%00r%00t%00(1); 이렇게 문자들 사이에 막 끼워넣으니 풀리게 되었다.
"; echo "view-source"; $_GET['id'] = addslashes($_GET['id']); if(preg_match("/\(|\)|select|from|,|by|\./i",$_GET['id'])) exit("Access Denied"); if(strlen($_GET['id'])>15) exit("Access Denied"); $result = mysqli_fetch_array(mysqli_query($db,"select {$_GET['id']} from chall61 order by id desc limit 1")); echo "{$result['id']}"; if($result['id'] == "admin") solve(61); echo "";?> result의 id가..
lv : {$result['lv']}"; if($result['lv'] == "admin"){ mysqli_query($db,"delete from chall59"); solve(59); } echo "view-source"; exit(); } } if($_POST['id'] && isset($_POST['phone'])){ $_POST['id'] = addslashes($_POST['id']); $_POST['phone'] = addslashes($_POST['phone']); if(strlen($_POST['phone'])>=20) exit("Access Denied"); if(preg_match("/admin/i",$_POST..
웹 해킹 문제를 풀다보면 preg_match 함수로 일부 키워드들을 필터링 한 문제들이 많이 보인다. preg_match("/admin|0x|#|hex|char|select/i",$_POST['phone']); '|'로 필터링하는 단어들을 구분하고 뒤에 i 옵션을 이용해 대소문자 구분을 하지 않는다. *정규식 참고하기 따로 알아낸 정규식들 정리 \d => 모든 숫자 \x20 => 스페이스 \& => 리터럴로 변환 즉, &문자 사용 불가능 preg_match("/or|union|admin|\||\&|\d|-|\\\\|\x09|\x0b|\x0c|\x0d|\x20|\//",$t) 이렇게 하면 %09같은거 못
문장을 보면 index.php파일을 vi편집기로 편집하다가 전원이 나가버려 파일이 사라졌다는 얘기이다. vi편집 중에 예기치 않게 종료해버린 경우 생성되는 파일이 있는데 바로 swap 파일이다. swap 파일이 생성되었다면 .원본파일명.swp 형식으로 생성된다. 그래서 .index.php.swp을 url에 쳐주면 index.php의 swap 파일을 획득 할 수 있다. 파일을 열어보면 flag를 획득 할 수 있다. ??> $flag = "FLAG{what_about_the_nano_editor?}";
프레딕
'Web Hacking' 카테고리의 글 목록 (18 Page)