본문 바로가기

Webhacking

(47)
[Xss game 3번] 문제 풀이 Xss game 3번 문제를 풀어보도록 하겠습니다. Mission Objective를 보면 역시나 alert를 실행시키면 성공입니다. 이번 문제의 특이한 점은 바로 사용자가 입력할 수 있는 공간이 없다는 것입니다. 하지만 image버튼들을 잘 누르다보면 중요한 점을 알아낼 수 있는데요 바로 URI 맨 끝 번호와 이미지의 번호가 일치한다는 점 입니다. URI 맨 끝에있는 번호를 test로 바꾸고 Go 버튼을 누르자 Image가 NaN으로 바뀌면서 아무런 이미지를 불러오지 못함을 확인할 수 있습니다. 이를통해, URI의 맨 끝에 있는 데이터가 이미지 태그에 연관되어 있음을 추측할 수 있습니다. 3번문제만에 드디어 사용하게 되는 개발자 도구! 우선 나타나지 않는 이미지 위에서 오른쪽 마우스를 클릭한 뒤 검사 ..
[Xss game 2번] 문제 풀이 Xss game 2번 문제를 풀어보도록 하겠습니다. Misson Objective를 보면 역시나 alert() 함수를 실행시키면 된다고 써져있습니다. 자 아래 타겟 브라우저에 열려있는 level2 사이트를 보면 뭔가 sns 처럼 생겼습니다. test라고 입력하고 share status 해보겠습니다. test를 입력하니, 입력한 데이터가 저장되어 sns처럼 계속해서 공유가 됨을 확인할 수 있었습니다. 이를 통해 알 수 있는점 두가지가 있죠 1. 사용자의 입력값을 서버에서 저장한다. 2. 사용자의 입력값을 서버에서 응답하여 화면에 노출한다 이걸 잘 생각해보면 간단합니다 'Stored XSS'를 위한 전제조건이 성립한다. "Stored XSS를 이용하여 alert() 함수를 실행하면 되겠다" 라는 생각을 할 ..
[Xss game 1번] 문제 풀이 Xss game 1번 문제를 풀어보도록 하겠습니다. Misson Objective, 즉 이번 문제의 목표를 보시면, "Javascrpt alert()함수를 실행시켜라"라고 되어있습니다. 즉 XSS 공격을 통해 Javascript alert()함수를 실행시키면 풀리는 문제가 되겠습니다. (이후 문제들도 동일!) 공격을 해야하는 테스트용 브라우저를 보시면 무언가 입력할 수 있는 공간을 제공하고 있습니다. 저 공간에 test라고 입력하고 search 버튼을 입력해 보겠습니다. 입력 결과를 보면 두가지를 알 수 있습니다. 1. query라는 파라미터에 사용자의 입력값을 넣어 GET 방식으로 서버에게 요청한다 2. 서버는 query 파라미터로 전달받은 사용자의 입력값을 응답값에 포함하여 화면에 출력한다 위 2개 ..
[LOS 4번 : orc] 문제 풀이 LOS 4번 orc를 풀이해보도록 하겠습니다. 먼저 문제를 보면, 기존 1~3번의 일반적인 SQL Injection들과는 다른점을 볼 수있습니다. 바로, 빨간박스 부분입니다. 빨간 박스 부분을 간단히 해석해보면 아래와 같은 순서로 진행됩니다. 1. 사용자로부터 입력받은 pw 내 특수문자(', ", `, \)에 대하여 역슬래시를 앞에 붙인 뒤, 저장 2. 특수문자 처리를 끝낸 값을 쿼리에 넣어 실행 3. 쿼리 실행 결과 pw필드에 데이터가 조회되었으며, 이 조회된 값이 사용자의 입력값과 동일하다면, 문제가 풀림 여기서 핵심은 1번, 즉 특수문자를 처리하는 과정에 있습니다. 특수문자앞에 역슬래시가 붙으면서, 쿼터가 제 역할을 하지 못하고 문자처리가 되며, 이로인해 SQL Injection이 불가해집니다. 또..
[LOS 3번 : Goblin] 문제 풀이 LOS 3번 Goblin 문제를 풀어보도록 하겠습니다.1번 박스를 통해, 어떠한 형태의 쿼리를 실행시키려는지 확인이 가능하며,2번 박스를 통해, 결과값에 따른 출력이 어떻게 변화하는지 확인이 가능하며,3번 박스를 통해, 문제 풀이를 위한 조건을 확인할 수 있습니다.- 1번 박스id가 기본적으로 guest로 박혀있으며, no는 기본적으로 숫자 형태이며, 쿼터(', ", `)가 필터링 되어 있어, 문자열을 입력할 수 없습니다.- 2번 박스1번 박스에 있는 쿼리를 통해 성공적으로 조회에 성공할 경우, 조회된 id를 Hello 문구와 같이 화면에 출력해줍니다.- 3번 박스 : 1번 박스에 있는 쿼리를 통해 admin이라는 id를 조회해야만 문제를 해결 할 수 있습니다.이 문제는 처음 보면 굉장히 난해할 수 있습..
[LOS 2번 : Cobolt] 문제 풀이 LOS 2번 Cobolt를 풀어보겠습니다.1번 박스를 통해, 어떤 쿼리를 수행하고자 하는지 확인이 가능하며, 2번 박스를 통해, 문제 풀이의 조건을 알 수 있습니다.- 1번 박스 : id는 일반적이나, pw의 경우 전달받는 즉시 md5 암호화 하여 조건문에 사용합니다.- 2번 박스 : 1번 박스를 통해 조회를 성공하여 id를 받아왔다면, 그 값이 꼭 "admin" 이어야만 문제가 해결됩니다.1번 문제와 다르게 저희는 문제를 통해 한가지 정보를 알아낼 수 있습니다.바로 admin이라는 아이디가 테이블에 존재한다는 것입니다.1번과 다르게 정보를 준다는 점을 통해 이 문제의 의도를 파악할 수 있습니다."ID는 알고 있으나, PW를 모르는 경우 ID만으로 로그인을 성공시켜라" 가 이 문제의 의도임을 알 수 있습..
[LOS 1번 : Gremlin] 문제 풀이 LOS 1번 Gremlin을 풀어보겠습니다.1번 박스를 보면, 어떤 SQL 쿼리를 실행시키고자 하는지 확인이 가능하며, 2번 박스를 통해 어떤 조건을 성립해야 문제가 풀리는지 확인이 가능합니다.- 1번 박스 : id와 pw를 입력받아 prob_gremlin 테이블에 해당 정보가 있는지 조회한다.- 2번 박스 : 1번 박스를 통해 조회를 성공하여 id 데이터를 불러왔다면, 문제는 풀린다.하지만 저희는 ID나 PW에 대한 그 어떤 정보도 받은적이 없습니다. 그렇다면 문제의 의도가 무엇인지 바로 짐작이 됩니다. "ID와 PW를 모르는 상태로 로그인을 성공시켜라" 가 이 문제의 의도라는것을 알 수 있습니다.3번 박스를 통해 id 파라미터에 공격을 수행하였으며, 4번 박스를 통해 공격을 성공하여 문제가 풀림을 확..