네 안녕하세요. Godhaword 입니다.
기본기 문제가 여러개 있어서 링크 걸어두고 날먹하네요. 하지만 그 만큼 기본기가 중요하다는 것이기에 아직 안 보신 분들은 다시 읽어보고 오시기 바랍니다.
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
$query = "select id from prob_orge where id='guest' and pw='{$_GET[pw]}'";
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_orge where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge");
highlight_file(__FILE__);
?>
복잡해보이는 코드가 있네요.
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge");
를 보면 Blind SQL Injection으로 문제를 푸는 것 같네요. 전에 4번 orc문제를 풀면서 만들어놨던 코드가 있기에 재활용 할 예정입니다.
하지만 4번 문제와는 다르게
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
or 과 and가 필터링 되어 있는 것을 보실 수 있습니다.
진짜 orc문제에서 or, and만 ||, &&로 바꿔주었는데 flag가 나온 모습을 볼 수 있습니다.
- 이 문제로 알 수 있는 점
- 기본기만 좋아도 CTF나 Wargame의 상당부분은 풀 수 있다. - Key Point
- or = || , and = &&
'web_security > Lord Of SQL' 카테고리의 다른 글
[LOS : Lord Of SQL Injection] 9번 Vampire 문제 풀이 (0) | 2022.06.04 |
---|---|
[LOS : Lord Of SQL Injection] 8번 Troll 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 6번 Darkelf 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 5번 Wolfman 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 4번 Orc 문제 풀이 (0) | 2022.06.04 |