티스토리 뷰

writeup/LOS

[Lord of SQL injection] gremlin

hoppi 2021. 6. 19. 21:18

서른아홉 번째 글.

SQL injection 문제를 풀 때마다 뭔가 많이 부족하다는 느낌을 받는다.

기본기를 탄탄히 다지기 위해서 Lord of SQL injection을 선택하였다.

 

1. 코드 분석

preg_match() 함수를 통해서 'prob' '_' '.' '()'를 필터링하고 있으며 id와 pw에 포함되어있으면 'No Hack ~_~'을 리턴한다.

그리고 입력 부분이 싱글 쿼터로 감싸 져 있다. 

이외에 별다른 부분은 없고 result값이 존재하면 문제가 풀린다.

 

 

2. Exploit

2.1 단순 논리 연산으로 풀기

id와 pw의 값을 싱글쿼터로 묶어주고 있었는데 싱글 쿼터를 이용하면 간단하게 escape가 가능하다.

 

 

 

?id=' or 1='1&pw=' or '1'='1

이렇게 쿼리 스트링을 전달하면

 

위와 같이 결과적으로 true가 되기 때문에 문제를 클리어할 수 있다.(참고로 and 연산이 or연산보다 우선순위가 빠르다)

 

 

clear

 

 

2.2 주석이용하기

?id=' or 1=1%23

이렇게 쿼리 스트링을 전달하면 뒷부분이 다 무효가 되기 때문에 문제를 풀 수 있게 된다.

처음에는 '#'을 그대로 입력하니 안돼서 '%23'으로 인코딩을 해준 뒤 전달하니 되었다.

 

 

clear

 

첫번째 문제라서 그런지 매우쉬웠다.

'writeup > LOS' 카테고리의 다른 글

[Lord of SQL injection] darkelf  (0) 2021.07.02
[Lord of SQL injection] wolfman  (0) 2021.07.02
[Lord of SQL injection] orc  (0) 2021.06.28
[Lord of SQL injection] goblin  (0) 2021.06.28
[Lord of SQL injection] cobolt  (0) 2021.06.20