- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클라우드
- centos docker
- Shell script
- GUI
- Python
- Tkinter
- 메소드
- 프로젝트
- RaspberryPi
- Java
- ACL
- 라즈베리파이
- 네트워크
- System
- 쉘 스크립트 if문
- JSP
- 그라파나
- 안드로이드
- 리눅스
- Linux
- 쉘 스크립트 기초
- 쉘 스크립트
- 자바
- docker
- LEVIATHAN
- nginx
- GPIO
- synology
- Android
- API
- Today
- Total
IT창고
[LOS] 1. Gremlin - (LOS 소개) 본문
LOS(Load of SQLInjection) 워게임 풀이를 해보도록 하겠습니다.
난이도는 몬스터 이름으로 난이도가 높을수록 강한 몬스터의 이름으로 대처됩니다.
LOS의 경우 유명한 워게임이라 그런지 LOS 사이트가 여러가지가 있는데 아래에 두곳을 소개합니다.
1. https://los.eagle-jump.org/
1번 사이트는 UI가 보기 좋고 25번까지 문제가 있으며 2번 사이트는 문제 수가 20년 8월 기준으로 48개나 되네요
이전에 BOF를 풀었던 당시에는 20문제까지 있는줄 알았는데 더 많이 생겨났네요
이번 글에서는 모든 LOS의 공통인 Gremlin 문제를 풀어보도록 하겠습니다.
문제를 보면 PHP 소스코드가 있으며 문제를 해결할 만한 힌트를 볼 수 있습니다.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
소스를 보면 위와 같은 부분이 있는데 id 값에 /prob|_|\.|\(\)/i 입력 시 종료페이지로 넘어가므로 해당 값은 사용하지 말라고 되어있습니다
$result = @mysqli_fetch_array(mysqli_query($db,$query));
위의 소스를 통해 쿼리문이 $result 변수에 배열로 저장되며 DB는 MySQL를 사용한다는걸 확인할 수 있습니다.
if($result['id']) solve("gremlin");
마지막으로 소스를 보면 $result 값의 id가 참일 경우 풀이 성공이라고 생각되는 소스가 있습니다.
정석대로 쿼리문을 넣어 보았습니다.
id값과 pw값이 제대로 확인이 됩니다.
사실 처음에 바로 풀 수 있었는데 URL 인코딩 생각을 깜빡하고 삽질을 조금 했습니다.
쿼리문은 ?id=1 or 1=1# 으로 하였으며 결과값은 위와 같습니다.
id= 값에 작은따옴표 ' 가 있는걸 확인할 수 있습니다.
위와 같은 방법으로 바로 문제를 풀 경우 쿼리문의 정답은 아래와 같습니다.
?id=1' or 1=1%23
추가로 id값도 굳이 넣을 필요는 없으며 ?id=' or 1=1%23 쿼리문으로도 충분합니다.
#을 URL 인코딩할 경우 %23이 됩니다. 이걸 깜빡해서 삽질한게 화가 나네요
이번엔 id값은 정상적으로 기입하고 pw값을 건드려보았습니다.
pw값도 id값과 동일하므로 id에 아무값이나 혹은 그냥 두고 pw값에 or문으로 참값을 만들 수 있습니다.
pw를 위와 같이 참값으로 만들어 주석문 없이도 가능합니다.
'WarGame > Load of SQL injection' 카테고리의 다른 글
[LOS] 4. Orc (0) | 2020.12.24 |
---|---|
[LOS] 3. Goblin (0) | 2020.12.22 |
[LOS] 2. Cobolt (0) | 2020.12.21 |