los
-
이번에도 전 문제와 유사한 문제가 왔다. 하지만 필터링되는 부분이 다른 것을 확인할 수 있다. 이 문제에선 파라미터로 pw와 no를 서버로 전달한다. 서버에선 pw와 no에 대한 검사를 후 쿼리문에 삽입한다. 이때 검사는 pw의 경우 prob, _, ., (), '를 필터링하며, addslashes 함수를 이용하여 특정 특수 문자를 사용 못하게 치환한다. no의 경우 ', SUBSTR, ASCII, =를 필터링한다. 공격 백터는 pw와 no가 있는데 pw의 경우 ''으로 감싸져 있어서 공격을 시도했을 때 '를 사용해야지만 가능할 거 같다. 하지만 pw의 필터링 목록 중 '이 있어서 pw의 경우 공격 백터로 사용을 못할 것으로 판단되었다. 남은 건 no 파라미터인데 no의 경우 감싸진 것이 없어서 HEX와..
[Lord of SQLInjection] Darkknight Write UP이번에도 전 문제와 유사한 문제가 왔다. 하지만 필터링되는 부분이 다른 것을 확인할 수 있다. 이 문제에선 파라미터로 pw와 no를 서버로 전달한다. 서버에선 pw와 no에 대한 검사를 후 쿼리문에 삽입한다. 이때 검사는 pw의 경우 prob, _, ., (), '를 필터링하며, addslashes 함수를 이용하여 특정 특수 문자를 사용 못하게 치환한다. no의 경우 ', SUBSTR, ASCII, =를 필터링한다. 공격 백터는 pw와 no가 있는데 pw의 경우 ''으로 감싸져 있어서 공격을 시도했을 때 '를 사용해야지만 가능할 거 같다. 하지만 pw의 필터링 목록 중 '이 있어서 pw의 경우 공격 백터로 사용을 못할 것으로 판단되었다. 남은 건 no 파라미터인데 no의 경우 감싸진 것이 없어서 HEX와..
2021.07.19 -
이번 문제는 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 -
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 -
이번 문제는 Orc 문제와 Darkelf 문제를 혼합한 문제이다. or, and가 필터링되어 있기 때문에 ||, &&를 이용하면 되고, addslashes 함수를 통해 ', ", \, Null 바이트를 사용하지 못하게 치환하기 때문에 문자열은 Hex 값으로 넘겨주면 우회가 된다. import requests, string, itertools url = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php' headers = {'Cookie': 'PHPSESSID=vu81ckm9savbopm00mj0sj2b9i'} def pwLength(): for num in range(1, 100): parameter = f"?pw='||LENG..
[Lord of SQLInjection] Orge Write UP이번 문제는 Orc 문제와 Darkelf 문제를 혼합한 문제이다. or, and가 필터링되어 있기 때문에 ||, &&를 이용하면 되고, addslashes 함수를 통해 ', ", \, Null 바이트를 사용하지 못하게 치환하기 때문에 문자열은 Hex 값으로 넘겨주면 우회가 된다. import requests, string, itertools url = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php' headers = {'Cookie': 'PHPSESSID=vu81ckm9savbopm00mj0sj2b9i'} def pwLength(): for num in range(1, 100): parameter = f"?pw='||LENG..
2021.07.16