일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보보안기사
- 정보처리기사 실기
- 해킹
- Spring
- PWN
- System
- webhacking
- 웹해킹
- Payload
- Pwnable.kr
- Shell code
- LOB
- wargame
- Lord of BOF
- Operating System
- hacking
- stack overflow
- Buffer Overflow
- OS
- Spring Framework
- 운영체제
- 네트워크
- 워게임
- pwnable
- 정보보안기사 실기
- SQL
- system hacking
- Spring MVC
- BOF
- webhacking.kr
- Today
- Total
DongDD's IT
[webhacking.kr] Level 51 본문
[webhacking.kr] Level 51
문제에 들어가니 "Admin Page"라는 화면에 ID와 PW를 입력할 수 있는 Login창이 있었다. 그리고 오른쪽 밑에는 Source라는 링크가 있었다. 아직 많은 공격법을 몰라서 그런지 로그인 창만 보면 sql injection이 떠올랐다. 일단 소스 코드를 보기전에 여러 값을 입력해보았다.
일단 admin라는 아이디에 아무 값이나 넣어서 제출해보았더니 Wrong이라는 message가 나오는 것을 볼 수 있었다. admin'#를 넣고 PW를 빈칸으로 두었더니 'Wrong'라는 message가 나오지 않고 그대로 인것을 볼 수 있었다. 그리고 ' 라던지 여러 값을 넣어보았지만 Wrong이라는 message만 나왔기 때문에 일단 소스 코드를 보고 어떤 식으로 동작하는 지 확인하고 해결 방안을 찾아야겠다는 생각이 들었다.
소스 코드는 위와같이 되어있었다. 먼저 POST방식으로 id와 pw를 받는데 이 값을 입력하지 않으면 if문으로 들어가지 않아 아무 것도 수행되지 않게 되어있었다. 즉, id와 pw는 무조건 입력을 해야 문제를 해결할 방법을 찾을 수 있다는 것이었다.
POST방식으로 id와 pw를 넘기면 id를 input_id 변수에 넣고 pw는 md5 해쉬함수를 통해 input_pw에 넣은 후 query를 보내는 형식으로 되어있다. query를 받아와 q[id]가 "admin"이 된다면 통과하는 문제인 것 같다.
먼저 md5해쉬 함수에 대해 알아보았다.
md5함수의 첫번째 인자에는 해쉬 값을 구할 문자열을 받는다. 두 번째 인자는 true, false를 입력할 수 있는데 true를 입력할 경우 16자리의 값으로 만들어주고 false를 입력할 경우 32자리의 값으로 만들어준다. 그리고 이 바꿔준 string을 return한다.
이 함수의 default값은 false로 설정되어있다.
md5(string, true) -> 16자리의 바이너리
md5(string, false) -> 32자리의 16진수
************** Answer & Flag **************
ID : admin
PW : 129581926211651571912466741651878684928
얼마 전에 했던 InCTF에서 Web문제로 나왔던 소스 코드이다. 이 문제를 해결할 때 사용했던 위 PW값을 Level 51문제에 그대로 넣어주니 바로 해결할 수 있었다.
이 값이 어떻게 생성됬는지는 잘 모르겠지만 앞으로도 많이 쓰일 수 있다는 생각이 들었다.
'Wargame > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] Level 58 (0) | 2017.12.19 |
---|---|
[webhacking.kr] Level 52 (0) | 2017.12.02 |
[webhacking.kr] Level 10 (0) | 2017.11.19 |
[webhacking.kr] Level 3 (0) | 2017.11.11 |
[webhacking.kr] Level 11 (0) | 2017.09.30 |