문제를 보면 쿼리 맨 뒤 부분에 and 1=0 이라는 구문이 있어 쿼리가 거짓이 되고 있다. 이 부분을 주석처리를 통해 없애주면 문제를 해결할 수 있을 것 같다. /?pw=' or id='admin'# 이라는 쿼리를 보냈더니 #문자가 들어가지 않아서 #을 헥스값으로 바꾼 %23으로 넣었더니 정상적으로 주석처리가 되며 쿼리가 참이 되서 문제를 해결할 수 있었다.

payload : /?pw=' or id='admin'%23

'Security & Hacking > Wargame' 카테고리의 다른 글

[Hack CTF] x64 Simple_size_BOF  (0) 2021.04.25
[Hack CTF] x64 Buffer Overflow  (0) 2021.04.23
[LoS] vampire  (0) 2020.11.10
[LoS] troll  (0) 2020.11.06
[LoS] orge  (0) 2020.11.06

문제를 보면 str_replace() 함수로 admin 이라는 문자열을 필터링 하고 있다. str_replace() 함수는 해당 문자열 패턴이 있으면 치환하는 것으로 이 문제에서는 admin이라는 문자열을 없는 값으로 치환한다.  adadminmin으로 값을 주면 adadminmin 빨간색 부분이 치환되도, admin 이라는 값이 남아서 필터링을 우회할 수 있다.

payload : /?id=adadminmin

'Security & Hacking > Wargame' 카테고리의 다른 글

[Hack CTF] x64 Buffer Overflow  (0) 2021.04.23
[LoS] skeleton  (0) 2020.11.10
[LoS] troll  (0) 2020.11.06
[LoS] orge  (0) 2020.11.06
[LoS] darkelf  (0) 2020.11.03

문제를 보면 id 값이 admin 이여야 하고 preg_match() 함수를 통해 or과 and 가 필터링 되어 있다. 이 문자열들은 sql에서 ||(or) 연산자와 &&(연산자)도 같은 역활을 한다. 따라서 || 연산자를 활용하여 or 필터링을 우회할 수 있다.

/?pw='||id=admin 으로 쿼리를 주입하면 문제를 해결할 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[LoS] troll  (0) 2020.11.06
[LoS] orge  (0) 2020.11.06
[LoS] goblin  (0) 2020.11.03
[LoS] orc  (0) 2019.11.29
[LoS] cobolt  (0) 2019.11.26

문제 설명을 보면 비교를 하는데 다른 값으로 해야 한다는 것 같다. 

문제 페이지를 보면 두 개의 값을 입력받는다. 

소스 코드를 확인해 보면 v1과 v2의  md5 값이 같으면 문제를 해결할 수 있는데

ctype_alpha() 함수로 v1이 알파벳인지 검사하고, is_numeric() 함수로 v2가 숫자인지 검사한다.

php md5 비교에서 두 md5 해시값의 앞부분이 0e로 같은 값을 가지면 참을 반환하는 취약점이 있다.

이러한 값을 가지는 알파벳과 숫자는 QQNKCDZO 와 240610708 가 있다.

이러한 취약점을 막기 위해서는 === 연산자를 사용하는 방법이 있다.

알파벳 값을 v1(첫번째)에 넣고 숫자 값을 v2(두번째)에 넣으면 flag를 얻을 수 있다.

 

알게된 점 : php md5함수에서 비교 취약점과 보안방안, php ctype_alpha()함수, is_numeric() 함수

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] type confusion  (0) 2019.09.10
[Wargame.kr] tmitter  (0) 2019.09.07
[Wargame.kr] strcmp  (0) 2019.09.02
[Wargame.kr] DB is really GOOD  (0) 2019.09.02
[Wargame.kr] md5 password  (0) 2019.08.29

문제 설명을 보면 자바스크립트 게임이고, 시스템을 우회하여 클리어 할 수 있냐고 물어보는 것 같다.

 

문제 페이지를 보면 어떤 게임을 할 수 있는 것 같다.

게임을 플레이 해 보면 31337점을 얻어야 게임을 클리어 할 수 있을 것 같다.

 

소스코드를 보면 다음과 같이 난독화된 자바스크립트 코드를 확인할 수 있다.

https://beautifier.io/ 라는 사이트에서 자바스크립트 코드의 난독화를 해제할 수 있다.

코드를 잘 살펴보다 보면 다음과 같이 score 값을 조작할 수 있는 부분을 발견할 수 있게 된다.

저기에 BTunnelGame['getScore']() 를 지우고 목표 점수인 31337으로 수정한후

전체 코드를 웹 페이지의 콘솔창에 입력한 후 게임을 실행하면 게임오버시 플래그를 얻을 수 있다.

 

 

알게된 점 : 자바스크립트 코드 난독화를 해제하는 사이트

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] DB is really GOOD  (0) 2019.09.02
[Wargame.kr] md5 password  (0) 2019.08.29
[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25
[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25

+ Recent posts