일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- gremlin
- php
- 간단한 로그인 구현
- LOS 3
- PHP로그아웃
- php주소검색기능구현
- 게시판 리스트
- Goblin
- mysqli_fetch_array
- mysqli_fetch_row
- php 다운로드
- 다운로드 구현
- 검색 기능
- 게시판 검색 기능 구현
- 파일 업로드
- Lord of SQLinjection 1
- LOS 2
- 주소검색기능구현
- mysqli_fetch_assoc
- 로그인 기능
- 게시판 구현
- LOS 1
- Lord of SQLinjection 2
- 우편주소DB
- Lord of SQLinjection 3
- php #쓰기 #읽기 #수정 #삭제 #게시판
- 로그아웃
- cobolt
- 우편주소검색
- PHP회원가입
- Today
- Total
목록워게임 (3)
ME

문제를 살펴보면, ' , " , ` 필터가 있고, id = guest , no 값을 GET 방식으로 받고 있다. id 값이 admin 과 일치하면 solve() 함수가 작동하여 클리어가 되는 방식이다. 일단 no가 무엇인지를 알아내야하기 때문에 no=1 을 넣어 봤다. Hello guest 가 출력된다. no=0 을 넣었을 땐 Hello guest 가 출력되지 않았다. 그렇다는건 guest = 1 이라는 걸 알 수 있다. 그렇다면 no=1 or 1을 넣어 참으로 만들면 어떨까? mysql> select * from test1; +-------+-----+ | id | num | +-------+-----+ | guest | 1 | | admin | 2 | +-------+-----+ 2 rows in s..

:) 문제를 살펴보면, 필터가 있고, GET 방식으로 id, pw 의 값을 받고 있는걸 알 수 있다. GET방식으로 받아온 id 값과 admin이 일치하면 solve() 함수가 작동하여 클리어가 된다. md5 는 해시 함수로 문자를 128비트 문자로 암호화시켜주는 함수이다. md5('123'); -> 202cb962ac59075b964b07152d234b70 md5('abc'); -> 900150983cd24fb0d6963f7d28e17f72 id 가 admin 이면 클리어가 된다고 하니 id 에 admin 을 입력해 봤다. 음 아무일도 일어나지 않았다. 뒤에 pw 가 충족되지 않아서 그러는 것 같으니 주석으로 날려버리자.

요즘 PHP 웹 개발을 하고 있어서인지 익숙한 코드가 보여 당황하지 않고 풀었던 거 같다. 기본적인 SQL 사용법만 알고 있으면 쉽게 풀 수 있는 문제이다. 코드를 살펴보면 preg_match() 함수의 필터, id, pw가 GET방식으로 입력을 받고 있는걸 확인할 수 있다. id 에 값이 존재하면 solve() 함수가 작동하면서 문제를 클리어할 수 있다. preg_match() : 문자열 찾기 preg_match("pattern", "subject") -> pattern 에 주어진 정규표현식을 subject 에서 찾는다. 있으면 참 없으면 거짓 반환 preg_match("/a/i", "subject") -> 뒤에 붙은 i 는 검사할 때 대소문자를 구분하지 않겠다는 의미이다. -> subject 에서 a..