본문 바로가기

Security118

[XSS Game] Level 2 문제를 읽어보니 저번 단계와 마찬가지로 스크립트를 삽입하여 alert 팝업창을 띄우라고 한다. 일단 Level 1에서 했던 것과 마찬가지로 스크립트를 넣어보았는데 아무것도 출력되지 않았다. 이를 통해 스크립트 태그를 필터링하고 있다는 것을 확인할 수 있다. 검색을 통해 스크립트 필터링을 우회할 수 있는 방법을 찾아보니 몇가지 방법이 있었다. 처음엔 스크립트 태그의 대소문자를 바꿔서 삽입해보았지만 똑같이 아무것도 출력되지 않았다. 두번째로는 onerror를 사용해보았다. 저 코드를 해석해보면 none.jpg라는 파일이 없을 시 alert 팝업이 뜨며 괄호 안의 내용을 출력한다는 내용이다. 참고해온 곳에서 그대로 가져와서 document.domain이라 입력했었는데 이것 대신에 아무 내용이나 적어도 상관없다.. 2022. 1. 9.
[XSS Game] Level 1 문제를 읽어보니 스크립트를 삽입해서 alert()를 띄우라고 한다. 문제에서 제시된 대로 자바스크립트 alert를 띄우기 위해 입력 창에 스크립트 태그를 넣어 alert를 띄우도록 했다. 해당 내용을 입력한 후에 버튼을 누르면 위와 같이 팝업이 뜨며 문제를 해결했다고 뜬다. 2022. 1. 8.
[1주차] XSS 공부 1. XSS 공격 - Cross-site Scripting의 약자 - 공격자가 공격하려는 사이트에 스크립트를 삽입하여 다른 사용자가 이를 실행하게끔 하는 기법 - 대표적 스크립트 언어 : 자바스크립트, VB스크립트 - 공격 당한 사용자는 의도치 않은 행동을 수행하거나 계정 하이재킹, 사용자 설정 변경, 쿠키 훔치기 및 오염, 광고 등을 당함 - 이 취약점은 사용자로부터 입력 받은 값을 제대로 검사하지 않고 그대로 사용할 경우 나타남 - 보통 특수문자나 예약어, 스크립트를 나타내는 문자를 사용함 2. 종류 1) Stored XSS - 공격자가 삽입한 악성 스크립트가 데이터베이스에 저장되고, 저장된 악성 스크립트를 사용자가 조회할 때 발생 - 공격 당한 사용자는 쿠키를 탈취당하거나 다른 사이트로 리다이렉션 .. 2022. 1. 2.
[Dreamhack System Hacking] STAGE 1 Dreamhack System Hacking STAGE 1 STAGE 1에 적혀있는대로 먼저 소개하는 글을 읽은 뒤 리눅스 환경을 구축하면 된다. 소개하는 바와 같이 우분투를 설치한 뒤 echo "Hello Ubuntu!"를 치라는 대로 치면 아래와 같은 화면이 뜬다. 여기까지 했을 경우 무사히 STAGE 1을 마칠 수 있다. 2022. 1. 1.
[pwnable.kr] Toddler's Bottle - blackjack 이번에는 blackjack 문제를 풀어보았다. 문제를 보니 백만장자가 되면 flag를 주겠다는 것 같다. nc pwnable.kr 9009를 통해 접속해보았다. 이렇게 3가지 메뉴가 뜨는데 백만장자가 되기 위해서는 게임을 해야하니 1을 선택해준다. 1을 선택하면 위와 같은 화면이 뜨는데 어떻게 진행해야 할 지 잘 몰라서 문제에 적혀있는 사이트를 통해 blackjack 게임의 코드를 살펴보기로 했다. 대충 21에 가까운 수를 얻어야 이기는 게임인 것 같은데 cash가 500인 상황에서부터 1000000까지 가려면 굉장히 많은 과정을 거쳐야 하니 무엇인가 꼼수를 부릴만한 것이 있는 지 살펴보았다. 여러가지 함수들과 함게 코드가 굉장히 길었는데 1번 메뉴를 선택시 play() 함수를 실행하는 것으로 보아 일단.. 2021. 12. 5.
[pwnable.kr] Toddler's Bottle - lotto 이번에 풀 문제는 lotto 문제이다. 다른 힌트는 없고 그냥 로또 게임을 만들었다고 한다. 적혀있는 명령어로 접속해준다. 접속 완료했다. 파일 리스트는 이 정도 있다는 것을 확인한 뒤 lotto.c 파일의 내용을 살펴봤다. 일단 main 함수 부분을 먼저 살펴본다. 메뉴를 선택하게끔 되어있다. 1을 입력하면 play(), 2를 입력하면 help(), 3을 입력하면 종료가 된다. help() 내용은 대충 이 게임이 어떻게 진행되는 지 참고하는 용으로만 보고 play() 함수를 자세히 봐보자. 아직 뭔진 모르겠지만 match 값이 6이면 flag를 출력하도록 되어있다. 코드가 기니 play() 함수의 일부분은 따로 잘라서 살펴봤다. read 함수 부분을 살펴보면 첫번째 매개변수에 0이 들어있으므로 표준 입.. 2021. 11. 28.
[pwnable.kr] Toddler's Bottle - mistake 이번에 풀 문제는 mistake 문제이다. 대충 읽어보니 무언가 실수가 있는 것 같은데 힌트가 operator priority라는 걸 보면 연산 우선순위에 관한 실수인 것 같다. 일단 매번 하던 것처럼 pwnable.kr에 접속해서 password인 guest를 입력해준다. 접속에 성공했다. ls -l 명령어를 통해 파일을 살펴보니 저런 파일들이 있는 걸 확인할 수 있다. flag에 접근할 권한이 없으니 먼저 mistake.c 파일을 열어서 내용을 확인해보았다. 쭉 훑어보면 크게 어려운 부분은 없다. 다만, 앞서 언급한대로 연산자 순서에 주목해서 코드를 확인해보니 힌트대로 연산 순서가 애매해보이는 부분이 있다. 위의 두 부분이었는데, 일단 차근차근 살펴보도록 하자. 첫번째 부분을 보면, open 함수의 .. 2021. 11. 21.
[pwnable.kr] Toddler's Bottle - random 이번에 풀 문제는 random 문제이다. 차례대로 풀고 싶었으나 지금 도전하기엔 어려워서 일단 풀만한 것부터 해보기로 했다. 이번 문제는 random value에 대한 문제인 것 같다. 얼마 전 과제를 할 때 random 함수를 쓰더라도 seed 값을 바꾸지 않는 이상 값이 매번 바뀌지 않고 일정하다는 내용을 알아본 적이 있다. 이런 내용에 대한 문제인가 의심이 들었지만 일단 다음으로 넘어가보도록 하자. 문제에 적혀있는대로 명령어를 통해 pwnable.kr에 접속한다. 비밀번호는 guest라 했으므로 그대로 입력해준다. 접속이 완료되었다. 마찬가지로 ls -l 명령어를 통해 어떤 파일이 있나 살펴보았다. 우리가 원하는 건 flag이지만 아직 flag에 접근할 수 없으므로 일단 현 시점에서 접근할 수 있는.. 2021. 11. 15.
[pwnable.kr] Toddler's Bottle - collision 두번째 문제는 collision 문제이다. 문제를 누르면 위와 같은 창이 뜬다. 이번 문제는 MD5 hash collision에 대한 문제 같다. 일단 하라는대로 따라가보자. 맨 밑에 있는 명령어를 통해 pwnable.kr에 접속해준다. 비밀번호는 guest라고 했으므로 password에 guest를 입력한다. 접속이 완료되면 위와 같은 화면이 뜬다. ls를 이용해서 무슨 파일이 있나 살펴보았다. 우리가 원하는 건 flag인데 아직 접근할 수 없기 때문에 먼저 확인이 가능한 col.c를 먼저 살펴보기로 했다. 저번 문제보다 훨씬 긴 코드를 볼 수 있다. 해결 방법을 찾기 위해 먼저 위의 코드를 해석해보자. unsigned long 타입의 hashcode에 0x21DD09EC가 저장돼있다. check_pa.. 2021. 10. 10.