네 안녕하세요. Godhaword 입니다.
10번 이전 까지는 약간 튜토리얼 같은 느낌에 문제였다면 10번 이후부터는 본격 SQL 이런 느낌입니다.
10번까지 write-up 보시면서 푸신분들은 문제 푸시지 말고 이론부터 공부하시길 바랍니다. 하나하나 좋은 문제라 답보고 넘기기엔 많이 아쉬운 느낌이 들기도 합니다.
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~");
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe");
if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe");
$query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
$_GET[pw] = addslashes($_GET[pw]);
$query = "select pw from prob_darkknight where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("darkknight");
highlight_file(__FILE__);
?>
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("darkknight");
이제 이 부분만 보면 Blind SQL 문제겠구나 싶기도 합니다.
일단 orc 때 꺼냈던 코드 다시 들고와서 이번엔 뭐가 더 필터링이 들어갔나 봅시다
싱글쿼터이 들어와서 머리를 조금 더 써야할 것 같네요.
그래서 ascii 값으로 비교하려고 봤으나 ascii 또한 hehe 필터에 걸리게 되었습니다.
그러면 ord를 씁시다
그런데 또 싱글쿼터가 필터링 되기에 저희는 sqli 포인트를 다시 한 번 생각해봐야합니다.
저희는 싱글쿼터를 쓸 수 없기에 문자형 파라미터를 받는 값에는 SQLI를 날리지 못합니다. 그러므로 no 값에다가 sql을 날려보죠
돌려놓고 최근에 대학 축제한 에스파 영상 보고 왔습니다.
제가 생각하기에 orc 다음으로 꽤 괜찮은 문제 였다고 생각합니다.
막 문제만을 위한 문제처럼 요상한 필터링이 들어간 것도 아니고, 기본기에 충실하며, 반복적으로 pw에만 값을 넣던 분들에게 문제를 한 번 다시 읽어봐라 하는 느낌의 문제입니다.
https://godhaword.tistory.com/477
https://godhaword.tistory.com/472
https://godhaword.tistory.com/473
아직도 안 읽으신 분은 저거 3개 그냥 읽어보고 오시기 바랍니다.
여기까지 풀어오신 분들은 더 이상 자잘한 설명은 필요 없을 것이라 생각됩니다. 핵심 부분만 정리해드리고 나머지 부분은 저 위에 3개의 링크를 읽어보시기 추천드립니다.
- 이 문제로 알 수 있는 점
- 이제부턴 진짜 해킹 중수
- 필터링 방법을 많이 알아두면 문제를 넘어가기 쉽다 - Key Point
ascii는 ord로 우회하자
'(싱글쿼터) 를 쓸 수 없는 곳에는 숫자형 데이터가 들어가는 파라미터에 공격을 시도해보자
'web_security > Lord Of SQL' 카테고리의 다른 글
[LOS : Lord Of SQL Injection] 14번 Giant 문제 풀이 (0) | 2022.06.05 |
---|---|
[LOS : Lord Of SQL Injection] 13번 Bugbear 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 11번 Golem 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 10번 Skeleton 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 9번 Vampire 문제 풀이 (0) | 2022.06.04 |