yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

LOS 1~3번 풀이 (gremlin, cobolt, goblin) 본문

wargame 풀이/LOS

LOS 1~3번 풀이 (gremlin, cobolt, goblin)

yehey 2020. 10. 4. 19:28

1번 gremlin 

solve("gremlin")의 조건을 보면 $result['id']가 존재할 때 gremlin이 해결되는 것을 볼 수 있다.

조건에 pw는 없기 때문에 pw부터는 주석처리 할 예정

id는 WHERE 조건을 항상 참으로 만들어 $query에 id를 담는다.

 

?id=' or 1=1%23 을 URL에 넣어준다. (1=1은 항상 참, or 연산에 의해 id가 참이 된다.)

2번 cobolt

gremlin과 마찬가지로 solve 조건에 pw가 존재하지 않으니 pw 부터는 주석처리한다.

이번에는 $result['id'] == 'admin'이어야 solve가 실행되기 때문에 id에 admin을 넣어주고 그 뒤는 주석처리해준다.

 

?id=admin'%23 을 URL에 넣어준다.

 

3번 goblin 

이번에도 id가 admin이어야 문제가 해결된다. 

 

현재 쿼리문에는 id='guest'가 지정되어 있어서 이를 바꾸어줄 수는 없다.

id='guest'와 no= 가 and 연산으로 묶여있는데, 이를 거짓으로 만들어주는 no 값을 넣고 (id='guest' 전체가 거짓이 된다.)

or 연산자를 추가해서 id에 admin을 넣어줄 것이다!

-> (id='guest' and no=0) 전체가 거짓이 되고, 뒤의 or id='admin' 만 참이 된다.

 

하지만 if(preg_match('/\'|\"|\`/i'$_GET[no])) exit("No Quotes ~_~"); 구문에서 ' " ` 를 사용하면 no Quotes를 출력하면서 SQL 구문이 적용되지 않는다.

따라서 따옴표를 사용하지 않으면서 id에 admin을 넣어주어야한다. 

->admin를 문자열로 넣어준다. (아스키 코드 이용)

 

?no=0 or id=char(97,100,109,105,110)%23

(no가 1만 아니면 된다. no가 1이면 and 구문이 참이되어 id='guest'가 되기 때문)

'wargame 풀이 > LOS' 카테고리의 다른 글

LOS 10번 풀이 (skeleton)  (0) 2020.10.14
LOS 8~9번 풀이 (troll, vampire)  (0) 2020.10.09
LOS 7번 풀이 (orge)  (0) 2020.10.09
LOS 5~6번 풀이 (wolfman,darkelf)  (0) 2020.10.05
LOS 4번 풀이 (orc)  (0) 2020.10.04
Comments