Season 1
-
이번 문제는 Orge 문제와 유사한 문제이다. 하지만 좀 더 강력한 필터링이 걸어져 있었다. prob, _, ., (), or, and, substr(, =이 필터링이 걸어져 있었고, 거기에 addslashes 함수로 특정 특수문자를 사용 못하게 치환하였다. 내가 SQL Injection에 사용하는 문자열들은 or, LENGTH(pw)=, SUBSTR(PW, 1, 1)=이 있다. 필터링에 걸리는 것은 or, SUBSTR(, =이 걸린다. 이것을 우회하려면 ||, LIKE로 우회가 가능하다. 하지만 SUBSTR 함수는 우회 방법이 없어서 다른 함수를 사용해야할 것 같았다. 일단 pw의 길이를 구해보겠다. Orc 문제처럼 admin의 pw가 여러 개는 아닌 듯 하다. admin의 pw 길이는 8개이며, gu..
[Lord of SQLInjection] Golem Write UP이번 문제는 Orge 문제와 유사한 문제이다. 하지만 좀 더 강력한 필터링이 걸어져 있었다. prob, _, ., (), or, and, substr(, =이 필터링이 걸어져 있었고, 거기에 addslashes 함수로 특정 특수문자를 사용 못하게 치환하였다. 내가 SQL Injection에 사용하는 문자열들은 or, LENGTH(pw)=, SUBSTR(PW, 1, 1)=이 있다. 필터링에 걸리는 것은 or, SUBSTR(, =이 걸린다. 이것을 우회하려면 ||, LIKE로 우회가 가능하다. 하지만 SUBSTR 함수는 우회 방법이 없어서 다른 함수를 사용해야할 것 같았다. 일단 pw의 길이를 구해보겠다. Orc 문제처럼 admin의 pw가 여러 개는 아닌 듯 하다. admin의 pw 길이는 8개이며, gu..
2021.07.18 -
이번엔 좀 특이한 쿼리문이 나왔다. 내 생각에는 만약 where절의 pw에 ' or id='admin'를 삽입하여 select id from prob_skeleton where id=‘guest’ and pw=‘’ or id=‘admin’ and 1=0와 같은 쿼리를 만들었을 때, id='admin' and 1=0을 False (True and False)로 만들어줘서 작동이 안되겠끔하기 위해서 맨 뒤에 and 1=0를 넣은 듯 하다. 하지만 우리에겐 주석처리라는 방법이 있다! 위와 같이 and 1=0을 주석처리를 하면 True만 남게 됨으로 쿼리문의 결과는 admin을 반환하게 된다.
[Lord of SQLInjection] Skeleton Write UP이번엔 좀 특이한 쿼리문이 나왔다. 내 생각에는 만약 where절의 pw에 ' or id='admin'를 삽입하여 select id from prob_skeleton where id=‘guest’ and pw=‘’ or id=‘admin’ and 1=0와 같은 쿼리를 만들었을 때, id='admin' and 1=0을 False (True and False)로 만들어줘서 작동이 안되겠끔하기 위해서 맨 뒤에 and 1=0를 넣은 듯 하다. 하지만 우리에겐 주석처리라는 방법이 있다! 위와 같이 and 1=0을 주석처리를 하면 True만 남게 됨으로 쿼리문의 결과는 admin을 반환하게 된다.
2021.07.18 -
이번 문제는 '를 필터링하고 있으며, id 파라미터의 값을 소문자로 만들어서 만약 값이 admin이 있으면 replace 함수를 이용하여 지우는 알고니즘을 갖고 있다. 나는 '의 필터링과 admin의 replace를 우회하기 위해 Hex 값을 사용하는 것을 생각했지만, where절의 id가 ''으로 묶어져 있기 때문에 통하지 않는다. 그래서 나는 Xss 공격을 방어하기 위한 replace 함수를 우회하는 방법 중 하나인 를 이용하기로 하였다. adadminmin을 넣어줘서 ad admin min으로 replace처리가 되어 지워지면 값은 admin이 되기 때문에 간단하게 쿼리의 결과를 admin를 반환받을 수 있었다.
[Lord of SQLInjection] Vampire Write UP이번 문제는 '를 필터링하고 있으며, id 파라미터의 값을 소문자로 만들어서 만약 값이 admin이 있으면 replace 함수를 이용하여 지우는 알고니즘을 갖고 있다. 나는 '의 필터링과 admin의 replace를 우회하기 위해 Hex 값을 사용하는 것을 생각했지만, where절의 id가 ''으로 묶어져 있기 때문에 통하지 않는다. 그래서 나는 Xss 공격을 방어하기 위한 replace 함수를 우회하는 방법 중 하나인 를 이용하기로 하였다. adadminmin을 넣어줘서 ad admin min으로 replace처리가 되어 지워지면 값은 admin이 되기 때문에 간단하게 쿼리의 결과를 admin를 반환받을 수 있었다.
2021.07.18 -
자바스크립트 실행시 결과값이 곧 답인것 같다 코드를 보면 다음과 같다 var foo = 5 + 6 * 7 ; 47 var bar = foo % 8 ; 7 var moo = bar * 2 ; 14 var rar = moo / 3 ; 4 function check(x) { if (x.length == moo) { alert("win!"); window.location += "?lvl_password="+x; } else { alert("fail D:"); } } 매우 짧다 정답 길이가 14자리이고 정답 알림이 win!이 될것 같다. 14자리 수에 맞는 아무 입력값을 입력 시, 다음과 같이 정답!
(HackThisSite) Javascript Mission 3자바스크립트 실행시 결과값이 곧 답인것 같다 코드를 보면 다음과 같다 var foo = 5 + 6 * 7 ; 47 var bar = foo % 8 ; 7 var moo = bar * 2 ; 14 var rar = moo / 3 ; 4 function check(x) { if (x.length == moo) { alert("win!"); window.location += "?lvl_password="+x; } else { alert("fail D:"); } } 매우 짧다 정답 길이가 14자리이고 정답 알림이 win!이 될것 같다. 14자리 수에 맞는 아무 입력값을 입력 시, 다음과 같이 정답!
2021.07.17 -
해석해보면 javascript를 쓰지 마라고 한다...ㅋ 크롬 설정에서 자바스크립트 해제하고 문제에 접속 시 complete
(HackThisSite) Javascript Mission 2해석해보면 javascript를 쓰지 마라고 한다...ㅋ 크롬 설정에서 자바스크립트 해제하고 문제에 접속 시 complete
2021.07.17 -
id가 admin인 결과를 반환해야하는데 문자열 admin에 필러팅이 걸려져 있다. 그럼 그동안 풀었던 방법대로 or와 Hex 값을 넣어줌으로써 풀이하면 될까? 이 방법도 '를 필터링을 걸어줌으로 막고 있었다. Try - 1 0x27은 '의 아스키코드 Hex 값이다. 혹시나 '를 아스키코드 Hex 값으로 넘겨주면 인식하지 않을까? 라는 생각에 넣어봤지만 실패하였다. Try - 2 webhacking.kr의 문제 풀이를 하면서 배웠던 공백을 이용한 방법을 이용해봤다. 만약 mysql에서 id 컬럼을 만들 때 varchar의 크기를 255로 설정하였고 저장된 값은 ‘admin’ 5글자이면 나머지 250의 크기는 공백으로 처리가 된다. 이 점을 이용하여 ‘admin ‘를 요청하면 mysql은 ‘admin’으로..
[Lord of SQLInjection]Troll Write UPid가 admin인 결과를 반환해야하는데 문자열 admin에 필러팅이 걸려져 있다. 그럼 그동안 풀었던 방법대로 or와 Hex 값을 넣어줌으로써 풀이하면 될까? 이 방법도 '를 필터링을 걸어줌으로 막고 있었다. Try - 1 0x27은 '의 아스키코드 Hex 값이다. 혹시나 '를 아스키코드 Hex 값으로 넘겨주면 인식하지 않을까? 라는 생각에 넣어봤지만 실패하였다. Try - 2 webhacking.kr의 문제 풀이를 하면서 배웠던 공백을 이용한 방법을 이용해봤다. 만약 mysql에서 id 컬럼을 만들 때 varchar의 크기를 255로 설정하였고 저장된 값은 ‘admin’ 5글자이면 나머지 250의 크기는 공백으로 처리가 된다. 이 점을 이용하여 ‘admin ‘를 요청하면 mysql은 ‘admin’으로..
2021.07.16