일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
31 |
- 밑바닥부터시작하는딥러닝
- 파이썬신경망
- 활성화함수파이썬
- 항등함수
- 보안
- 스트림암호
- C알고리즘
- 딥러닝파이썬
- 신경망
- 달고나bof
- 인공지능
- c언어
- 신경망 학습
- 머신러닝
- 정보보안
- 8086CPU레지스터
- C언어 알고리즘
- C언어알고리즘
- 파이썬
- 백준
- FTZlevel10
- BOJ
- 신경망구현
- 신경망파이썬
- 소프트맥스함수
- 버퍼오버플로우
- 백준알고리즘
- 딥러닝
- 알고리즘
- BOF
- Today
- Total
목록<CTF> (95)
HeeJ's

문제 화면이다. SQL Injection을 이용해서 해결하는 문제라는 것을 알 수 있으며, 소스코드를 확인해주었다. 위 문제의 소스코드인데, php부분을 보고 코드를 조금 읽어보았다. if($_GET['no']){ $db = dbconnect(); //get 방식으로 'no'를 입력받고, 파일과 DB를 연결한다. if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack"); //get 방식으로 받은 no를 검사하는데, 위의 문자(공백, /, &, select, from 등)가 포함되어있으면 no hack을 출력하고 종료한다. $result = mysqli_fetch_array(mysqli_query($db,"select i..

old-34 문제에 처음 접속하면 검은 빈 화면과 함께 debugme라는 alert 창이 뜬다. 바로 소스코드를 확인해주었다. 소스코드에는 알아보지 못하게 난독화된 코드가 길게 작성되어 있었다. 처음 페이지에 접속했을 때 alert 창을 확인했기 때문에 alert라는 문자열을 검색(Ctrl+F)해주었다. alert라는 단어가 1개 검색되고, 이에 해당하는 b('0x1e','14cN')이 무엇을 뜻하는지 알아보기 위해 콘솔창에 복사 붙여넣기 해주었다. alert창에서 보았던 debug me를 뜻하는 것을 알 수 있었다. alert 앞에 else가 있는 것으로 보아, 앞부분을 해석해보면 플래그를 얻을 수 있을 것이다. alert 바로 앞 부분이다. 어느 위치를 가르킨다면 alert를 띄우지 않고 문제를 해결..

32번 문제 화면이다. join버튼을 누르고 이름을 여러 개 눌러보니 you already voted라는 문구가 뜬다. hit에 따라 순위가 매겨져 있는 것을 보니 내가 join해서 내 닉네임이 생겼고, 1등 혹은 100으로 만들면 해결되는 문제인 것 같다. 내가 투표를 한 것을 기억하는 쿠키가 사용되는 것 같아, 쿠키를 확인해주었다. 여기에서 ok 값을 지우고 체크해주었더니 투표를 한 번 더 할 수 있었고, 또 쿠키로 들어와 내용을 지워주고 해야했다. 이 방식이 너무 번거로운 것 같아 몇 번 진행해주다가 vote_check라는 쿠키를 차단해주었더니 더이상 쿠키가 생기지 않았다.

문제에서 바로 소스코드를 확인해주었다. 소스코드를 잘 살펴보면 get방식으로 넣어준 id 값이 admin이 되면 문제가 해결된다. 하지만 admin이라는 문자열이 그대로 들어가게되면 no!라고 출력을 해주는 것 같다. 그래서 admin을 url 인코딩을 해주었다. url인코딩 표를 이용하여 admin을 바꾸면 %61%64%6D%69%6e가 된다. 이 값을 url에 입력해주었다. 위의 인코딩 된 값을 입력해주었으나, admin이 되면서 no!라는 문자열이 뜬다. 웹 서버와 브라우저 사이에서 데이터를 교환할 때, 브라우저는 폼에서 입력받은 데이터를 자동으로 인코딩한 값으로 보내고 php는 자동으로 디코딩하기 때문입니다. 그렇다면 위의 인코딩 한 값을 한 번 더 인코딩 해준다면 브라우저로 넘어갈 때 %61%6..

문제에 접속하면 이런 화면이 뜬다. 바로 소스코드를 확인해주었다. 소스코드를 살펴보면 onclick="this.style.left=parseInt(this.style.left,10)+1+'px' => o을 클릭하면 오른쪽으로 1픽셀 씩 이동한다. if(this.style.left=='1600px') => 이 o가 1600픽셀에 도달하면, 문제를 해결할 수 있는 것 같다. 한 번 클릭에 1 픽셀이 이동되는데, 1600번을 클릭하기엔 너무 많은 시간이 걸린다. 따라서 콘솔창에 hackme.style.left='1599px'를 입력해주면, o가 1599px의 위치로 이동하게 된다. 그리고 O를 한 번 클릭해주면 문제를 풀 수 있다.

무언가 값을 입력해 flag를 찾아내는 문제인 것 같다. 소스코드를 살펴보자. unlock에 있는 식을 계산해보자. 복붙해서 파이썬으로 돌려주었다. 이 결과 값을 입력창에 넣고 check 버튼을 눌러주면 성공

문제에 들어가보면 이렇게 알록달록한 별이 있다. 소스코드를 확인해보자. onkeypress라는 함수를 보니 사이트에서 키보드로 입력을 해 무언가 실행되도록 하는 것 같다. funcing mv에서 cd라는 변수에 100, 97, 119, 115를 입력하면 별이 이동하는 것 같다. 그렇다면 124를 입력하면 flag를 찾을 수 있는 것 같다. 위의 값을 입력해주기 위해 아스키코드표를 보고 해당하는 값들을 찾아보았다. 100 = d 97 = a 119 = w 115 = s 124 = | (파이프) 실제로 wasd를 아무거나 연타해보았더니 별이 움직였다. 이제 | (파이프)를 입력하면 성공