Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- sql injection point
- 모의해킹
- JWT
- 과제
- Python
- Reflected Xss
- blind sql injection
- Error based sql injection
- 쿠키
- lord of sqli
- 웹개발
- css
- CTF
- XSS
- file upload
- csrf
- MySQL
- Cross Site Request Forgery
- lord of sql injection
- 로그인페이지
- 로그인
- cors
- 세션
- 게시판 만들기
- php
- Los
- JS
- union sql injection
- sql injection
- cookie 탈취
Archives
- Today
- Total
Almon Dev
[Lord of SQL Injection] gremlin 풀이 본문
LOS 풀이
gremlin
풀이
1. 코드 분석
GET메서드로 id와 pw를 파라미터로 보내면 쿼리에 포함되는 형식으로 보입니다.
쿼리의 결과 중에 id가 있으면 solve("gremlin") 함수를 실행해서 문제를 성공적으로 풀 수 있습니다.
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) solve("gremlin");
입력된 파라미터를 필터링하는 부분입니다.
preg_match() 함수와 정규식을 이용해서 특정 패턴을 검색하고 발견될 경우
No Hack문자를 화면에 출력하며 문제풀이에 실패합니다.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
정규식 해석
/ / : / 사이의 값을 정규식으로 해석합니다.
prob : prob 문자열을 찾습니다.
| : or을 뜻합니다.
\. \( \) : 각각 . ( ) 문자를 뜻합니다.
i : / / 뒤에 붙은 문자는 플래그로 i는 대소문자를 구분하지 않음을 뜻합니다.
/prob|_|\.|\(\)/i
해석하면 prob _ .()를 대소문자를 구분하지 않고 찾는 정규식입니다.
문제를 푸는 방법은 prob, _, ., ()를 사용하지 않고 쿼리의 결과가 나오게 하면 됩니다.
2. 쿼리 삽입
select id from prob_gremlin where id='' and pw=''
문제의 쿼리에서 항상 참이 되게 하려면 or 1=1을 삽입하는 것이 가장 좋습니다.
admin과 같은 항상 있을 것 같은 계정을 id에 삽입하고 pw를 주석처리를 해도 상관없지만
저는 or 1=1을 삽입해 보겠습니다.
/gremlin_280c5552de8b681110e9287421b834fd.php?pw='+or+'1'='1
pw 파라미터에 ' or '1' = '1을 삽입하여 주석을 사용하지 않고 id를 모른다는 가정하에 문제를 풀었습니다.
id 파라미터에 ' or '1' = '1을 삽입할 경우 문제가 해결되지 않는데
이유는 연산자 우선순위 때문입니다.
where id='' or '1'='1' and pw='' 의 경우 and 연산이 or보다 우선순위가 높아서 먼저 연산됩니다.
where id='' or ('1'='1' and pw='')로 해석되므로
pw와 id 중 하나가 빈 문자열인 경우를 찾는 id='' or pw='' 조건문이 되어버립니다.
'모의해킹 > Lord of SQLi' 카테고리의 다른 글
[Lord of SQL Injection] darkelf 풀이 (0) | 2025.01.06 |
---|---|
[Lord of SQL Injection] wolfman 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] orc 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] goblin 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] cobolt 풀이 (0) | 2025.01.06 |