본문 바로가기

Webhacking/LOS[Lord Of Sql injection]

(5)
[LOS 5번 : wolfman] 문제 풀이 LOS 5번 wolfman 풀이를 정리해 보았다. 5번 wolfman 문제는 크게 3가지 특징이 있다. GET방식으로 전달받는 pw 파라미터에 띄어쓰기를 사용할 수 없다. 실행시킬 쿼리의 where 구문 내 id컬럼이 'guest'로 고정되어 있고, 파라미터는 pw만 받는다. 풀이 방법은 여전히 쿼리 조회 결과 id 컬럼이 'admin'이어야 한다. 위 3가지 특징을 한 줄로 정리하면 'id가 guest로 고정된 상태에서 pw 파라미터를 이용해 띄어쓰기를 쓰지않고 공격하여, 조회된 id가 admin이 되도록 만들어라' 이다. 핵심은 바로 띄어쓰기만을 막았다는 데에 있다. mysql에서 쿼리를 실행할 때, 공백의 역할을 하는것은 띄어쓰기 뿐만이 아니다. mysql 클라이언트에서 쿼리 입력중에 엔터를 실수로..
[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번 박스를 통해 공격을 성공하여 문제가 풀림을 확..