CTF/LOS
[LOS] – assassin 풀이
[LOS] – assassin 풀이
2019.04.06위 문제를 보면, LIKE 구문을 사용하는 것을 볼 수 있다. LIKE 구문에서 %를 사용하면 다음과 같다. pw like ‘1%’ => pw의 첫번째 글자가 1인 것들 pw like ‘%1’ => pw의 마지막 글자가 1인 것들 pw like ‘%1%’ => pw에서 1을 포함하는 것들 위 원리중 첫번째를 이용하여 로그인을 해보자. a~z , 0~9까지 했는데 guest만 뜬걸 보니 다음과 같이 추측할 수 있다. 첫번째 pw글자는 admin과 guest 둘다 같다. 칼럼 값들의 순서는 guest가 맨 위에 있다.(admin은 guest 아래에 있다.) 이젠 9를 포함하여 똑같은 방식으로 로그인을 시도해본다.
[LOS] – giant 풀이
[LOS] – giant 풀이
2019.04.06위 문제를 보면 FROM 과 테이블 이름이 붙어 있는 것을 볼 수 있다. GET 방식으로 shit에 값을 FROM 과 테이블 이름 사이를 띄어 주는 값을 보내야 한다. 하지만 몇몇 문자들이 필터링이 되어있다. 위 문자들을 제외한 것들을 찾아 값을 보내면 클리어 할 수 있다. %0b를 넣어주면 클리어가 가능하다. https://los.rubiya.kr/chall/giant_18a08c3be1d1753de0cb157703f75a5e.php?shit=%0b
[LOS] – bugbear 힌트 및 풀이
[LOS] – bugbear 힌트 및 풀이
2019.04.06힌트 1. 당연한 소리이겠지만 필터링 하는 값들을 보고 우회 기법을 생각해 본다. 2. GET 방식으로 pw와 no에 값을 보내는데, 쿼리와 필터링을 고려해서 어디가 가장 공격하기 쉬울까 3. 나는 no에 쿼리를 집어 넣었다. 이유는 pw는 이미 상글쿼터로 감싸져 있고, 심지어 싱글쿼터를 필터링 하고 있다. 주석 처리 한다고 해도 싱글쿼터를 no에 닫아야 하는데 no에도 싱글쿼터를 필터링 하고 있다. 그렇다면 공격할 수 있는 곳을 no 말고는 없다. 4. 공백 우회는 이미 알 것이고, 패스워드를 알아내기 위해서는 substr 말고 mid,right,left 가 있다. = 대신 < 또는 > 를 통해 비교할 문자의 크기를 비교할 수 있다. 풀이 일단 admin으로 로그인을 해야 한다. 나는 위의 힌트3번를 ..
[LOS] – darkknight 힌트 및 풀이
[LOS] – darkknight 힌트 및 풀이
2019.04.06힌트1. pw와 no에는 어떤 것들을 필터링 하는지 분석. 힌트2. 제시된 쿼리를 자세히 보면 알 수 있을 듯 힌트3. no에는 싱글쿼터를 막지만 쿼리에는 쿼터 자체가 없다. 풀이 필터링 된것들을 토대로, 내 지식으론 pw에 어떤 공격을 해도 먹히지 않을 거 같다는 생각이 들었다. 쿼리를 자세히 보면 no에는 쿼터 자체가 없다. 필요에 따라 싱글쿼터를 써야 하는 경우가 있는데 no에는 싱글쿼터를 필터링 하고 있다. 다른 방법이 있다면 더블쿼터를 쓰는 것이다. ?no=1 or id like “admin” admin으로 로그인 했는데 pw도 알아야만 문제가 풀린다. 이번에도 역시 python과 함께했다. 아래 코드는 pw 길이와 pw를 알아내는 코드이다. import requests import string..
[LOS] – skeleton 힌트 및 풀이
[LOS] – skeleton 힌트 및 풀이
2019.04.06힌트1. 목표는 admin 으로 로그인 하는 것이다. pw에 쿼리를 잘 집어 넣어 보자. 풀이. 싱글쿼터를 막지 않고 있다. 그러면 내가 원하는 쿼리를 넣을 수 있다는 뜻이다. ?pw=1′ or id=’admin’%23
[LOS] – vampire 힌트 및 풀이
[LOS] – vampire 힌트 및 풀이
2019.04.06힌트1. str_replace 라는 함수가 뭐하는 놈인가? 힌트2. aadmin 라고 보내면 a만 남는다.. 그러면?? 풀이 솔직히 풀이 할것도 없다. ?id=aadmin 이라고 넘기면 a 만 남는다. 이를 이용해서 값을 보내면 clear ?id=adadminmin
[LOS] – troll 힌트 및 풀이
[LOS] – troll 힌트 및 풀이
2019.04.06힌트1. ereg 라는 함수는? 힌트2. DB는 문자열 같은 경우 대소문자 구별을 하지 않는다. 풀이. 이 문제를 풀때 ereg 취약점을 이용해서 풀면 끝인줄 알았다. ?id=%00admin 이렇게 넘겼는데 되지 않더라. 근데 ereg 함수를 알아보니 대소문자를 구별한다고 한다. 즉 admin과 Admin은 다르다는 소리. 하지만 DB에서는 admin이랑 Admin을 같다고 인식한다. (대소문자 구별을 하지 않는다는 소리) 따라서 다음과 같은 방식으로 하면 clear ?id=Admin ?id=ADmin ?id=ADMin … … …
[LOS] – orge 힌트 및 풀이
[LOS] – orge 힌트 및 풀이
2019.04.06힌트1. 이전 문제와 비슷하다. 다른점이 있다면 pw를 알아야 한다는 것. 힌트2. 그렇다. Blind… 풀이. 최종적인 목표는 id=admin이고 admin의 pw를 알아내야 한다. 우선, or과 and를 우회한 다음 적절한 쿼리를 넣어서 pw 길이를 알아내보자. 첫번째 쿼리에서 id=’guest’ 라고 되어 있으므로 이것부터 우회 해야한다. ?pw=1’||id=’admin 이렇게 하면 일단 admin으로 로그인이 되지만, pw가 맞지 않아서 풀 수가 없다. 일단, pw 길이를 알아야 하기 때문에 다음과 같은 값을 보낸다. ?pw=1’||id=’admin’%26%26length(pw)=1%23 => %26은 &, %23은 # pw길이가 1자리는 아니다. 대소관계를 사용해서 >,
[LOS] – darkelf 힌트 및 풀이
[LOS] – darkelf 힌트 및 풀이
2019.04.06힌트1. pw에 or과 and를 필터링 하고 있다. 우회기법은? 힌트2. or은 || 로, and는 &&로 해야한다. 하지만 GET으로 &&를 넘긴다면 %26%26으로 보내야 할 것이다. 풀이. 위에 힌트에서 말했듯이 or,and는 || 와 &&로 우회가 가능하다. 그럼 답은 나왔다. ?pw=1′ || id=’admin
[LOS] – wolfman 힌트 및 풀이
[LOS] – wolfman 힌트 및 풀이
2019.04.06힌트1. 공백을 필터링한다는 것은 알고 있을 것이다. 공백을 우회하는 방법은? 힌트2. ‘공백 필터링’ 이라는 검색만 잘하면 찾을 수 있을 것이다 풀이 이번문제는 공백을 필터링 하고 있다. 이때 우회 기법은 많다. 1. Tab : %09 – no=1%09or%09id=’admin’ 2. Line Feed (\n): %0a – no=1%0aor%0aid=’admin’ 3. Carrage Return(\r) : %0d – no=1%0dor%0did=’admin’ 4. 주석 : /**/ – no=1/**/or/**/id=’admin’ 5. 괄호 : () – no=(1)or(id=’admin’) 6. 더하기 : + – no=1+or+id=’admin’ 출처: http://binaryu.tistory.com/31..
[LOS] – orc 힌트 및 풀이
[LOS] – orc 힌트 및 풀이
2019.04.06힌트1. 최종목표는 admin으로 로그인하고, 그 pw의 값을 비교하는데 참으로 만들어야 한다는 것. 즉 pw를 알아야 한다. 힌트2. 그렇다. blind sql injection 문제이다. 힌트3. length, substr 함수를 쓰면 풀릴것이다. 풀이 php해석을 해보면 결국엔 admin의 pw를 알아내야만 한다. 그렇다. blind sql injection 문제이다. length함수를 이용해서 admin의 pw 길이를 알아보자. 아래는 이 문제를 풀기 위해 작성된 파이썬 코드이다. 이 코드를 쓰려면 PHPSESSID 값을 바꿔주면 된다. (time.sleep을 쓴 이유는 딜레이를 넣지 않으면 확률로(?) 끊기는 경우가 있어서 넣었다.) import requests import string impo..
[LOS] – goblin 힌트 및 풀이
[LOS] – goblin 힌트 및 풀이
2019.04.06힌트1. no에는 싱글쿼터를 필터링 한다. 근데 솔직히 필터링 하던말던 상관없다. 힌트2. 이 문제의 테이블을 만들어 보자. 힌트3. guest의 no 값은 1이다. 그럼 admin의 no 값은? 풀이 이 문제는 이 문제의 테이블이 어떻게 생겼는지만 잘 파악하면 풀 수 있을 것이다. 일단 최종 목표는 admin으로 로그인 하는 것이다. no=1 일때 guest로 로그인이 된다는 것은 알 수 있다. no=2 일때 로그인이 되지 않는다. 여기서 추측 할 수 있는것은 다음과 같다. (Table 만들기 귀찮아서 걍 이렇게 했다.) +——————-+ | id | no | +——————–+ | guest | 1 | | ???? | ?? | +——————–+ 일단 table안에는 하나 이상의 값은 들어 있다는게 확실..