본문 바로가기
Python

LOS 4번문제(Python을 이용한 관리자 패스워드 길이 구하기)

by 웹하는빡통 2019. 11. 2.

이번 포스팅은 Los 4번문제 관련해서 포스팅을 해보았다. 

 

los 4번 문제이다 코드를 확인해 본 결과 admin의 패스워드를 설정하는 문제인거 같다.

 

일단 패스워드를 알기 전 패스워드의 길이를 알아보았다(수동으로) 코드를 보면 GET방식으로 값을 넘기는 것을 알수 있다. php?pw=' or id='admin' and length(pw)=1%23

    php?pw=' or id='admin' and length(pw)=2%23

    .

    .

    .

    php?pw=' or id='admin' and length(pw)=8%23

 

php?pw=' or id='admin' and length(pw)=8%23 입력 힌 결과 패스워드 길이가 8자리인 것을 알 수 있었다.

그런데 만약 패스워드길이가 100자리 이상이라면?? 그런일은 없겠지만 진짜 만약 100자리면 수동으로 저런식으로 노가다 하다가는 인내심에 한계를 느껴 노트북을 부셔버릴 수도 있다.

그래서 우리는 Python프로그램으로 관리자의 패스워드 길이를 존나 쉽게 구해보도록 하겠다.

 

1.제일 먼저 requests를 import해준다.

 

2.cookies라는 변수에 My 쿠키값을 넣어준다.(Burp나 피들러로 잡으면 자신의 쿠키값을 확인 할 수 있다.)

3.변수 admin_length는 1부터 30까지 돌면서 passwd길이와 같은 길이의 숫자가 나올때까지 반복적으로 돈다.

 

4. passwd의 길이가 30자리는 넘지 않을것 같으니 30으로 대충 잡아주고 for문을 이용하여 돌려버린다.

 

5. address라는 변수를 선언하고 losURL주소를 넣어준다.

 

6.url변수를 선언하고 address+?pw=' or length(pw)+str(admin_length)+"%23" 값을 넣어준다 .

address변수에는 해당 los의 url주소가 담겨있다. 

https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=' or length(pw)+str(admin_length)+"%23"

 

7.res에는 url과 cookie값을 가져와서 text파일로 저장한다. 

즉 res.text 파일 안에 Hello admin이라는 문장이 있으면 패스워드 길이를 찾았다는 말과 같은 뜻이다. 

 

실행 결과 관리자의 패스워드 길이가 8자리라는 것을 알 수 있었다.

★Tip

주석처리 
#: %23 , ' :%27 


2. length 사용해 패스워드 길이 찾기
   패스워드 길이를 알수 있다
ex) length=('apple') = 5 -> 반환값:1(true)
   //   =4 -> 반환값:0(false)


4. ascil와 substr이용해 하나씩 패스워드 찾기
   ascii 사용법 :아스키코드표를 이용해서 문자를 10진수로 바꿀 수 있다
    ex) ascii('a') = 97 -> 반환값 :1(true) 

5. substr 사용법: 문자열에서 일부 문자열을 추출한다
     ex) substr(문자열,시작위치,갯수)
          substr('apple',1,1) -> 반환값:'a' 
          substr('apple',1,2) -> 반환값:'ap'

댓글