Network 51

[LOS_8]troll

이번 문제는 어떻게 공격하면 좋을까 먼저 코드분석부터 하자면 쿼리문의 결과에서 id가 admin이면 solve가 된다. 그리고 ereg()함수에서 get으로 받아오는 id값을 필터링해준다. 하지만 PHP 5.3+ 부터 쓰이지 않는다고 한다. 그 이유는 무엇일까? 첫 바이트에 NULL을 넣으면 필터링을 우회할 수 있기 때문이다. 시도해 보았다. ?id=%00admin 보아하니 널값이 입력되었는데 검증하는 부분에서 null 을 인식해서 그런것 같다. 그렇다면 ereg의 또다른 특징인 대소 문자를 구분하는 것을 이용해 보고자 한다. ?id=Admin 클리어! 비교적 간단한 troll 문제였다.

Network/LOS 2019.08.17

[LOS_7]orge

이 문제는 pw를 get으로 받는데 정확하게 pw를 맞추라는 문제이고 or, and가 제한이 걸려있는 blind sql injection문제이다. 첫번째 조건문을 보아 쿼리문을 통해 참이면 "Hello [id]"가 출력이 된다. 조건 참일 경우를 이용하여 길이를 하나하나 찾아 주었고 그냥 입력하면 정상적으로 들어가지 않아 # 을 넣어 뒤에를 주석처리를 해주었다.(URL인코딩) and,or는 &&, ||로 대체해서 쓸수있기에 이것을 이용해 랭스를 알아 보았다. (URL인코딩을 통해 우회를 해주었다.) || : %7c%7c && : %26%26 ?pw=1'%7c%7c id='admin' %26%26 length(pw)=8 %23 전 문제와 비슷하게 넣었는데 똑같은 8자리였다. ?pw=1'%7c%7c id='..

Network/LOS 2019.08.17

[LOS_4]orc

이 문제는 pw를 get으로 받는데 정확하게 pw를 맞추라는 문제이다. 이 문제에서 사용되는 addslashes() 함수는 ' , " , \ 등문자가 포함되어 있다면 그 앞에 \ 를 붙이는 함수이다. 이 함수를 사용하지 않으면 오류가 발생할수 있기 때문에 취약하다. 그리고 stripslashes() 함수는 addslashes() 함수와 짝을 이루어 사용되는 것으로 역할은 addslashes()함수 의 반대이다. 즉, 역슬래시(\)를 떼어내는 함수이다.

Network/LOS 2019.08.16

[LOS_3]goblin

이번 문제는 기본적으로 id에 guest가 들어있고 no를 get으로 받아 쿼리를 날리는 문제이다. 조건문에는 아이디가 admin으로 들어와야 풀리는 문제 goblin이다. no에 아무거나 입력하니 이와같이 뜬다. 난 어드민이고 싶은데! if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 게스트를 빠져나가서 아이디를 어드민으로 넣어주고 싶었지만... 보호기법이 작용한다. 음 다시 돌이켜보니 guest에 해당하는 no는 1이다. 그렇다면 admin에 해당하는건 다른 숫자이지 않을까? 하지만 다른 방법이 떠오르지 않는다. https://los.eagle-jump.org/goblin_5559aacf2617d21ebb6efe907b7dded8.php..

Network/LOS 2019.08.16

[LOS_2]cobolt

두번째 문제 cobolt이다 id와 pw이 get으로 받아 쿼리문을 날려주는데 md5로 암호화 시켜서 날려준다! 그리고 조건문에서는 id가 admin이면 문제가 해결이 된다. https://los.eagle-jump.org/cobolt_ee003e254d2fe4fa6cc9505f89e44620.php?id=admin && pw=5f4dcc3b5aa765d61d8327deb882cf99 pw에 password를 md5암호화해서 넣어보았다. 그대로 결과값으로 나온것을 확인해 볼 수 있다. https://los.eagle-jump.org/cobolt_ee003e254d2fe4fa6cc9505f89e44620.php?id=admin&& pw=1')or('1'='1 우선순위로 봤을때 이미 id와 pw에서 fasl..

Network/LOS 2019.08.16

[LOS_1]gremlin

처음 문제인 gremlin을 풀어보고자 들어왔다. query 에서 id,pw값을 get으로 받아 query문을 토대로 조건문을 통해 참이면 문제가 해결이 된다. url맨뒤에 ?id=1&&pw=1을 추가해주었다. get방식으로 id와 pw에 1을 각각 넣어주니 잘들어간것을 확인해 볼 수 있었다. 그렇다면 참이 되려면 id와 pw를 정확히 맞춰야 하는데 그런 방법보다 무조건 참이 되어 통과하는 방식으로 풀어보려고 한다. https://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=1&&pw=1' or '1'='1 이렇게 작성해 주었다. 왜? id = '1' and pw = '1' or '1' = '1' 을 보면 알수있다. SQL에서 A..

Network/LOS 2019.08.16

Exercise 3. CSRF

CSRF공격이란? Cross Site Request Forgery 사이트 간 요청 위조 피싱을 활용해 사용자 모르게 패스워드 변경! 옥션 해킹 사건에서 사용된 공격기법 (출처:인프런/화이트해커가-되기위한-8가지) DVWA 실습 (Low) 패스워드를 변경하면 바로 변경이 되어서 버프스위트로 확인을 해보았다. GET으로 값을 넘겨주는 것을 확인해 볼 수 있다. 이벤트에 응모하는 임시 페이지 입니다. 이 링크를 누르시면 이벤에 등록이 됩니다!! Click! 이번은 피싱이기에 오픈소스를 이용해 CSRF코드를 받아 이벤트페이지로 바꾸어 주었다. 그럼 구글 메일을 이용해 피싱을 해보기로했다. 나의 운영하는 웹서버에 html파일을 올린다음 url주소를 이용해 응모하기를 만들어 주었다. 이로써 'hacked'로 비밀번..

Network/DVWA 2019.08.09

Exercise 12. JavaScript

DVWA (Low) 이러한 폼이 주어져있고 아무값이나 입력하면 틀리다고 나온다. 소스코드의 전반적인 내용은 MD5 로 이루어져있다. 버프스위트로 봤을때 토큰과 phrase를 비교해주면 success 인것 같다. 그런데 좀 익숙하다 token이 md5로 구성이 되었지 않을까하고 Decryption을 해주었다. 'ChangeMe'를 원하는대로 MD5로 Encryption을 해주었다. 결과는 PunatrZr 음 히든에 토큰이 들어있다. 소스코드가 돌면서 만들어 내는것이 아니라 고정적으로 들어있었다는것?!? 소스코드를 보니 토큰이 어떻게 만들어졌나 보니 ROT13으로 인코딩하고 MD5으로 Encryption 한 결과값이였다. 결국 ChangMe였다는것..! 아.. success 를 제출하면 성공이라고 한다. 처..

Network/DVWA 2019.08.09