Web/LOS

[LOS] 문제 7. orge

__bo0o_ 2018. 10. 26. 22:01

 

왜 IE에서 자꾸 교차 사이트 스크립팅 방지 메세지가 뜨는지 몰랐는데,

XSS를 사용하도록 설정이 되어있으면 나타나는 오류라고 한다.

그래서 그냥 크롬에서 하기로 했다.

크롬은 아래와 같이 바로바로

URL 인코딩해서 값을 보내줘서 오류 뜨지 않고 되는 것 같더라.

 

 

 

1. && 연산자 사용 시

 

?pw=%27 || id=%27admin%27 && length(pw)>10 입력했을 때,

아래와 같이 && 연산자가 출력되지 않는 것을 볼 수 있는데

 

URL를 살펴보니

&&가 URL 인코딩 되어 전송되지 않았다.

URL에 사용되는 일부 특수문자(:, ;, /, =, ?, & 등)를 제외한 문자만 인코딩이 되므로

&&를 %26%26으로 바꿔서 전송해주자.

 

 

2. 패스워드 길이

 

따라서 ?pw=' || id='admin' %26%26 length(pw)<'10

?pw=' || id='admin' %26%26 length(pw)='8

즉 패스워드는 8 글자이고,

마찬가지로 substr 함수를 이용하여 admin의 패스워드를 알아보도록 하자.

 

 

3. 패스워드 찾기

 

?pw=' || id='admin' %26%26 substr(pw, 1, 1)='6

이런식으로 패스워드를 찾도록 한다.

 

답은

?pw=6c864dec




< 작은 에피소드 >


사실 저번처럼 노가다로 집어넣으려고 하니까

하나씩 찾기 귀찮기도하고 해서

HTTP 요청 보내는 request 모듈 이용해서

파이썬으로 코드를 짜보려고 했다.

 

근데 request 한 거

response로 받아서 text 내용 출력해도

자꾸 html 코드는 안뜨고 

아래와 같은 자바스크립트 코드만 뜨는거다.

urllib으로 해도 안되고, write해서 저장하는 방식으로 해봐도 안되서

결국 구글에 script location.href 검색해봤다.

위 코드는 자바스크립트 코드로 자동으로 특정 페이지로 이동할 때 사용하는 코드라 한다.


와이어샤크를 통해 패킷을 확인해보니

301 Moved Permanetly

요청된 리소스가 Location 헤더에 주어진 URL로 완전히 옮겨졌다고만 하고

코드가 동작되지 않았다.



< 해결 >


내가 짠 코드, 사람들이 블로그에 올린 2017년 코드들,

깃허브에 있는 코드들을 가져다 써봐도

패스워드를 얻어오지 못해서 반쯤 포기하고 있었는데


심심해서 los 문제를 여러번 푸는,,,

엄청 잘하시는!

컴신 오빠가 내 고민을 깔끔하게 해결해주셨다!

코드가 안먹혔던 이유는 로그인을 안했기 때문이라고 하셨다!!


즉 사이트에서

로그인한 이용자만 이용 가능하도록 설정했기 때문에

저 위의 패킷들 location.href='./'은

파이썬 코드에서는 로그인 안했으니까

메인페이지로 리다이렉트 시켜라 라는 뜻이라고 한다.

그래서 쿠키값을 넣어주니

내가 짠 파이썬 코드가 제대로 작동했다.


코드는 아래 주소를 참고해주세요!

https://github.com/insecurity22/los-sql-injection/tree/master/los/sqlinjection



< 또한 자신의 쿠키값을 아는 방법은 >


맨 아래 사이트를 참고하시거나

F12 - Network - Name에 주소 클릭 - Headers에 cookie를 확인해주세요!



참고 : 

http://blog.dork94.com/153?category=795655

https://dreamaz.tistory.com/25