네 안녕하세요. Godhaword 입니다.
bugbear 문제에서 고난을 겪다가 이 문제 풀고 다음 문제부턴 술술 풀렸던 기억이 있는 문제입니다.
바로 문제 보겠습니다.
<?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|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe");
$query = "select id from prob_bugbear 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_bugbear where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("bugbear");
highlight_file(__FILE__);
?>
if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe");
like 도 막고 0x도 막혔네요..
일단 막힌 부분만 다시 생각해보자면 0x 는 다시 admin으로 넘어가면 될 것 같습니다.
like 는... in을 한번 써볼까요?
그 외에도 걸리는 부분이 두 부분 더 있습니다.
- ord에 or 이 들어갑니다.
- 공백 또한 필터링 됩니다.
공백은 %0c 같은걸로 우회하면 되고 ord 말고 다른 방법을 찾아 보아야 합니다.
후.. 일단 코드를 짜면서 몇가지 참고하시면 좋을만한 것이 있습니다.
- ord엔 or이 들어간다.
- like 가 안되면 in 이나 instr 을 쓰자
- 코드 짜다가 뭔가가 이상하다 싶으면 response 값을 보자
- url encoding 값을 파라미터로 날리면 그걸 한 번더 url encoding 해서 날리기에 이런 꼴에선 url+param 형식으로 날려주자
계속 안되는데 response 값 안보고 버팅기다가 hehe 뜨는거 보고 알았네요..
제가 주로 get 형식이여도 파라미터로 날리는걸 좋아하는데요. 이 문제 같은 경우 %0a를 날리게 된다면 각각의 문자를 한 번씩 더 url encoding 하기에 저희가 원하는 쿼리문을 날리기 힘들어집니다.
그렇기에 url에 태워서 같이 보내주면 flag를 뽑을 수 있습니다.
- 이 문제로 알 수 있는 점
- 저는 코드가 한 번 이상 꼬여서 시간을 잡아먹게 되면 주석이 점점 많아집니다.
- 여러가지 스페이스바 필터링 우회 언어를 알아두자 - Key Point
hex(mid(pw,1,1)) in (hex(55))
와 같은 식으로도 두 변수를 비교할 수 있습니다.
'web_security > Lord Of SQL' 카테고리의 다른 글
[LOS : Lord Of SQL Injection] 15번 Assassin 문제 풀이 (0) | 2022.06.06 |
---|---|
[LOS : Lord Of SQL Injection] 14번 Giant 문제 풀이 (0) | 2022.06.05 |
[LOS : Lord Of SQL Injection] 12번 Darknight 문제 풀이 (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 |