[WARGAME][los] darkelf

jckim22·2022년 11월 23일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
98/114
<?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_darkelf 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>"; 
  if($result['id'] == 'admin') solve("darkelf"); 
  highlight_file(__FILE__); 
?>

이번 문제에서도 id가 admin인 데이터베이스를 찾고 있다.
근데 추가적으로 필터링하는 것이 or와 and가 있다.

지금까지 나도 모르게 or는 ||로 써왔는데 그냥 그대로 쓰면 된다 ...

or를 우회하는 문자는 ||이고 and를 우회하는 문자는 &&이다.
이건 프로그래밍을 하다보면 다 자연스럽게 익어있을 것이다.

그럼 먼저 아래에 pw부분에 대입할 쿼리를 생각해보자.

별 다를 것 없이 아래와 같이 해주면 된다.

마지막 공백은 탭으로 우회해주고
페이로드로 보내게 되면

flag를 얻을 수 있다.

profile
개발/보안

0개의 댓글