los
-
이번 문제는 where절의 pw가 ('')로 감싸져 있다. 또한 id는 admin이 아니라고 박혀있다. solve를 얻기 위해선 쿼리문의 값이 있어야 solve를 얻을 수 있다. 문제를 풀기 앞서 pw에 대한 검사가 있었다. prob, _, ., (), #, -를 필터링 길이가 6 초과를 하면 안됨. 일단 #, --를 사용해서 and id != 'admin'를 주석 처리하는 것은 포기해야할 것 같다. 인터넷에 주석 방법을 찾아보니 #, --, /**/, ;%00 4가지 방법이 있었다. 이 중 #, --은 필터링 때문에 불가능하며, /**/은 *사이에 쿼리문이 들어가야 함으로 현 문제에서 사용이 불적합하다. 즉, ;%00을 이용하여 and id != 'admin'를 주석 처리해야한다. select id f..
[Lord of SQLInjection] Nightmare Write UP이번 문제는 where절의 pw가 ('')로 감싸져 있다. 또한 id는 admin이 아니라고 박혀있다. solve를 얻기 위해선 쿼리문의 값이 있어야 solve를 얻을 수 있다. 문제를 풀기 앞서 pw에 대한 검사가 있었다. prob, _, ., (), #, -를 필터링 길이가 6 초과를 하면 안됨. 일단 #, --를 사용해서 and id != 'admin'를 주석 처리하는 것은 포기해야할 것 같다. 인터넷에 주석 방법을 찾아보니 #, --, /**/, ;%00 4가지 방법이 있었다. 이 중 #, --은 필터링 때문에 불가능하며, /**/은 *사이에 쿼리문이 들어가야 함으로 현 문제에서 사용이 불적합하다. 즉, ;%00을 이용하여 and id != 'admin'를 주석 처리해야한다. select id f..
2021.08.07 -
이번 문제는 Succubus 문제에서 발전된 문제이다. addslashes 함수를 사용하여 ', ", \, %00(Null 바이트)를 \', \", \\, \%00로 치환한다. 또한 strrev 함수를 이용하여 '\, "\, \\, %00\로 자리를 변경한다. 나는 ", %00를 이용하여 Succubus 문제처럼 풀이하려고 한다. select id from prob_zombie_assassin where id='"\' and pw='||1=1#'로 입력을 한다면, where 절의 id는 "' and pw='로 인식하게 된다. 원하는 대로 이루어졌지만, 간과한게 있었다. pw도 strrev 함수을 이용한다는 것이다. 나는 pw도 strrev함수로 자리가 바뀐다는 것을 깜박하였고, 반대로 #1=1||로 넣어..
[Lord of SQLInjection] Zombie Assassin Write UP이번 문제는 Succubus 문제에서 발전된 문제이다. addslashes 함수를 사용하여 ', ", \, %00(Null 바이트)를 \', \", \\, \%00로 치환한다. 또한 strrev 함수를 이용하여 '\, "\, \\, %00\로 자리를 변경한다. 나는 ", %00를 이용하여 Succubus 문제처럼 풀이하려고 한다. select id from prob_zombie_assassin where id='"\' and pw='||1=1#'로 입력을 한다면, where 절의 id는 "' and pw='로 인식하게 된다. 원하는 대로 이루어졌지만, 간과한게 있었다. pw도 strrev 함수을 이용한다는 것이다. 나는 pw도 strrev함수로 자리가 바뀐다는 것을 깜박하였고, 반대로 #1=1||로 넣어..
2021.08.07 -
이번 문제는 id와 pw를 입력받는 문제인데 where절에 id='{$_GET[id]}' and pw='{$_GET[pw]}'으로 들어간다. 문제는 두 파라미터가 '을 필터링을 하고 있는 것이 문제이다. 인터넷에 검색해본 결과 \를 사용하면 된다는 것을 알 수 있었다.만약 id 값이 ’ 것을 찾고 싶어서 쿼리문을 SELECT id FROM test WHERE id = '''로 작성하면 에러가 난다. 그 이유는 '를 문자로 인식하지 않기 때문이다. 이러한 문제 때문에 특수문자 예외처리를 해줘야하는데, 이것이 \이다. SELECT id FROM test WHERE id = '\''로 처리하게 되면 id가 '인 것을 찾는 쿼리문으로 된다. 이것을 이용하면, SELECT id FROM prob_succubus ..
[Lord of SQLInjection] Succubus Write UP이번 문제는 id와 pw를 입력받는 문제인데 where절에 id='{$_GET[id]}' and pw='{$_GET[pw]}'으로 들어간다. 문제는 두 파라미터가 '을 필터링을 하고 있는 것이 문제이다. 인터넷에 검색해본 결과 \를 사용하면 된다는 것을 알 수 있었다.만약 id 값이 ’ 것을 찾고 싶어서 쿼리문을 SELECT id FROM test WHERE id = '''로 작성하면 에러가 난다. 그 이유는 '를 문자로 인식하지 않기 때문이다. 이러한 문제 때문에 특수문자 예외처리를 해줘야하는데, 이것이 \이다. SELECT id FROM test WHERE id = '\''로 처리하게 되면 id가 '인 것을 찾는 쿼리문으로 된다. 이것을 이용하면, SELECT id FROM prob_succubus ..
2021.07.24 -
해당 문제의 입력 파라미터는 pw 뿐이며, '를 필터링하고 있다. 또한 쿼리문을 보니, '' 안에 입력값이 들어가서 문제 해결에 어려움이 있을 것 같다. 결국 몇시간을 시도한 끝에 다른 사람의 문제풀이를 살펴보니 쿼리문에서 =를 대신 LIKE를 사용한 이유가 있었다. LIKE에선 약간의 정규식을 사용할 수 있다. 특정 문자% : 특정 문자로 시작 %특정 문자 : 특정 문자로 끝남 %특정 문자% : 특정 문자을 포함 위를 이용하여 pw를 찾으면 된다. import requests, string, itertools url = 'https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php' headers = {'Cookie': 'PHPSE..
[Lord of SQLInjection] Assassin Write UP해당 문제의 입력 파라미터는 pw 뿐이며, '를 필터링하고 있다. 또한 쿼리문을 보니, '' 안에 입력값이 들어가서 문제 해결에 어려움이 있을 것 같다. 결국 몇시간을 시도한 끝에 다른 사람의 문제풀이를 살펴보니 쿼리문에서 =를 대신 LIKE를 사용한 이유가 있었다. LIKE에선 약간의 정규식을 사용할 수 있다. 특정 문자% : 특정 문자로 시작 %특정 문자 : 특정 문자로 끝남 %특정 문자% : 특정 문자을 포함 위를 이용하여 pw를 찾으면 된다. import requests, string, itertools url = 'https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php' headers = {'Cookie': 'PHPSE..
2021.07.24 -
그동안 익숙했던 문제 스타일이 아닌 새로운 문제 스타일이 나왔다. 사이트에서 입력 받는 파라미터는 shit 하나이며, 이 파라미터는 from prob_giant의 사이에 들어가게 된다. shit의 필터링은 공백, \n, \r, \t이며, 입력 길이가 1보다 커서는 안된다. 나는 필터링 목록 대신에 사용할 만한 것을 생각하다가, addslashes 함수의 우회 방법이 생각이 났다. addslashes 함수의 우회 방법은 특정 인코딩 기법을 적용한 함수에 %01와 같이 의미가 없는 URL 인코딩 값을 넣어줌으로써 우회를 하는 방법이다. 이처럼 의미가 없는 URL 인코딩 값을 보내주면 될 것 같아서 %01를 서버에 보내봤다. 공백처리는 되었지만, 결과값을 반환하지 않고 있다. 인터넷에 검색하니, %01 ~ %..
[Lord of SQLInjection] Giant Write UP그동안 익숙했던 문제 스타일이 아닌 새로운 문제 스타일이 나왔다. 사이트에서 입력 받는 파라미터는 shit 하나이며, 이 파라미터는 from prob_giant의 사이에 들어가게 된다. shit의 필터링은 공백, \n, \r, \t이며, 입력 길이가 1보다 커서는 안된다. 나는 필터링 목록 대신에 사용할 만한 것을 생각하다가, addslashes 함수의 우회 방법이 생각이 났다. addslashes 함수의 우회 방법은 특정 인코딩 기법을 적용한 함수에 %01와 같이 의미가 없는 URL 인코딩 값을 넣어줌으로써 우회를 하는 방법이다. 이처럼 의미가 없는 URL 인코딩 값을 보내주면 될 것 같아서 %01를 서버에 보내봤다. 공백처리는 되었지만, 결과값을 반환하지 않고 있다. 인터넷에 검색하니, %01 ~ %..
2021.07.24 -
이번 문제는 굉장히 어려워 보였다. 그 이유는 이전 문제인 Darkknight 문제와 같은 문제이지만, 풀이에 사용하는 =, LIKE, ascii, 0x를 필터링을 하고 있기 때문이다. 문제 풀이를 위해 공격 백터와 공격 백터에 대한 검사를 정리하겠다. 공격 백터는 pw와 no가 있다. pw의 필터링은 '이며, addslashes 함수로 특정 특수 문자를 사용 못하게 치환하고 있다. no의 필터링은 prob, _, ., (), ‘, SUBSTR, ASCII, =, or, and, 공백, LIKE, 0x이 있다. 일단 생각한 방법은 '를 우회할 수 없으니, no를 이용하여 공격를 시도해야할 것 같다. 인터넷에 =, LIKE를 대신하여 사용할 만한 것을 찾을 수 있었다. 바로 IN 연산자라는 것이다. 사용하..
[Lord of SQLInjection] Bugbear Write UP이번 문제는 굉장히 어려워 보였다. 그 이유는 이전 문제인 Darkknight 문제와 같은 문제이지만, 풀이에 사용하는 =, LIKE, ascii, 0x를 필터링을 하고 있기 때문이다. 문제 풀이를 위해 공격 백터와 공격 백터에 대한 검사를 정리하겠다. 공격 백터는 pw와 no가 있다. pw의 필터링은 '이며, addslashes 함수로 특정 특수 문자를 사용 못하게 치환하고 있다. no의 필터링은 prob, _, ., (), ‘, SUBSTR, ASCII, =, or, and, 공백, LIKE, 0x이 있다. 일단 생각한 방법은 '를 우회할 수 없으니, no를 이용하여 공격를 시도해야할 것 같다. 인터넷에 =, LIKE를 대신하여 사용할 만한 것을 찾을 수 있었다. 바로 IN 연산자라는 것이다. 사용하..
2021.07.20