모의해킹/Wargame
[Lord of SQL Injection] zombie_assassin 17번
klus!
2022. 12. 29. 16:22
0. 들어가기

1. 전체코드

2. 주요코드
$_GET['id'] = strrev(addslashes($_GET['id']));
$_GET['pw'] = strrev(addslashes($_GET['pw']));
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_zombie_assassin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) solve("zombie_assassin");
1) strrev함수,addslashes함수
처음 등장한 strrev함수는 입력받은 문자열을 거꾸로 뒤집어서 반환 합니다.
예) strrev("hello") → olleh
다만, 바이트 단위로 반환되기 때문에 한글의 경우 깨지는 현상이 있습니다.
addslashes함수의 경우싱글쿼터(' '), 더블쿼터(" "), 역슬래시( \ ), Null Byte 앞에 역슬래시를 추가합니다.
2) ID와 PW는 preg_match함수를 통해 /prob, _, ( )을 필터링하며, /i로 대소문자를 구별하지 않습니다.
3. SOLVE
이번 문제의 경우 16번 문제와 다른 점은 strrev함수가 추가되어 id/pw가 거꾸로 반환된다는 것입니다.
2022.12.23 - [모의해킹/Wargame] - [Lord of SQL Injection] succubus 16번(feat. 싱글쿼터 우회)
[Lord of SQL Injection] succubus 16번(feat. 싱글쿼터 우회)
0.서큐버스 1. 전체 코드
toriyong.tistory.com
16번의 SOLVE는 ?id=\&pw=||1=1%23 로 작성하여 풀었다.
즉, id=\(역슬래시)와 pw= or 1=1 %23을 거꾸로 작성해보면
더보기
?id=%00&pw=%231=1||
