분류 전체보기
-
[L.O.S] Level 27 - blue_dragonWargame/L.O.S 2022. 12. 30. 03:12
Level 27 - blue_dragon을 풀어보자. 코드를 잘 살펴보면 문제를 풀 수 있다. id와 pw에 값을 넣어야 하는데, 싱글쿼터(')와 역슬래시(\)가 필터링되고 있다. 저것들을 넣지 않고 해결할 수 있을까?? 아무리 봐도 저것들을 넣지 않고는 문제를 해결할 방법이 생각나지 않는다. 여기서 생각을 좀 바꿔보자. 싱글쿼터와 역슬래시가 필터링되는 것은 쿼리가 입력된 후 result 에서이다. 그렇다면 쿼리의 입력은 정상적으로 되고, 그 이후 동작하는 것을 보면 되지 않을까? 여기까지 생각을 한 후, Time-Based SQL Injection을 시도해보기로 했다. 입력을 한 이후, 참일 때 지연되도록 하고 거짓일 때 페이지가 바로 뜨도록 하였다. 그렇게 하니 공격이 제대로 수행이 되는 것을 확인할..
-
[L.O.S] Level 26 - red_dragonWargame/L.O.S 2022. 12. 28. 04:42
Level 26 - red_dragon을 풀어보자. 두 번째 dragon인데, 이전 문제보다는 쉬운 편이다. id에는 길이 제한이, no에는 숫자만 입력할 수 있다는 제한이 있다. 먼저 참 값을 입력하여 어떤 출력이 나타나는지 확인해보도록 하자. id 파라미터에 값을 입력할 때, 길이 제한을 주의하며 참 값을 입력하니 Hello admin이 출력되었다. 아마도 테이블의 가장 상단에 admin이 존재하는 것 같다. 이제 이 문제를 어떻게 해결할지 생각해보도록 하자. 필요한 정보는 php의 is_numeric 함수에 숫자뿐만 아니라, 공백 문자도 넣을 수 있다는 것이다. 이러한 사실을 이용해 Level 20에서 했던 방법으로 문제를 해결할 수 있다. id의 길이 제한 조건에 맞춰 '||no>#을 입력해준다...
-
[L.O.S] Level 25 - green_dragonWargame/L.O.S 2022. 12. 27. 05:11
Level 25 - green_dragon을 풀어보자. 오랜만에 입력한 query 문에 대한 출력을 보여주는 문제이다. 그런데, 그 출력을 두 개나 보여준다. (인심이 좋다..) 출력이 두 개, 그리고 싱글쿼터(')와 더블쿼터(")가 모두 필터링 된다는 것을 알 수 있다. id 파라미터에 admin을 넣어 그것이 db에 있다면 문제가 해결된다고 하니, 넣어보도록 하자. 당연히 문제는 풀리지 않는다. pw의 값을 모르니, 우회를 하여 다시 시도해보도록 하자. 우회를 하기 전, 항상 참 값을 입력했을 때 어떻게 출력이 되는 지를 확인해보도록 하자. 그런데 두 번째 query 문의 출력이 나타나지 않는 것을 확인할 수 있다. 이것은 문제의 테이블인 prob_green_dragon에 값이 없다는 것을 의미한다...
-
[정보보안기사] 두 번째 실기 결과Certificate/정보보안기사 2022. 12. 27. 02:45
드디어 두 번째 실기 시험의 결과가 12/23에 발표되었다. 이번 시험은 문제를 풀면서 단답형은 어려웠고, 작업형과 실무형은 쉽다고 생각했다. 그리고 시험 유형이 바뀌기 전 마지막 시험이라 그런지, 기출 문제들에서 나온 것들이 꽤 있었다. 결과적으로 올해 목표 중 하나였던, 정보보안기사를 합격하였다. 합격 점수는 61점이다.. 겨우겨우 합격한 것이긴 하지만, 앞으로도 관련 내용은 지속적으로 찾아볼 예정이니 넘어가도록 하자. 이제 한동안은 시험보다는 실력을 기를 수 있도록 다른 공부들을 진행해야겠다.
-
[L.O.S] Level 24 - evil_wizardWargame/L.O.S 2022. 12. 17. 19:15
Level 24 - evil_wizard를 풀어보자. 코드를 보면 앞의 Level인 hell_fire와 비슷하다. 다른 점은 union, sleep, benchmark 함수를 사용할 수 없다. 앞에서 했던 Time-Based SQL Injection은 할 수 없지만, if 문을 이용해 문제를 풀어보도록 하자. 먼저 email의 길이를 구해보자. order by가 정렬될 수 있도록 참일 때, 1을 입력할 수 있도록 한다. 그랬더니 admin, rubiya 순으로 데이터가 정렬되는 것을 볼 수 있다. 다음으로 에러가 나오도록 거짓일 때의 값을 order by의 범위를 넘어가도록 설정하였다. 그런데, 출력이 된다.. rubiya, admin 순으로 앞과는 다른 결과지만, 분명 출력이 되고 있다. 혹시나 싶어 ..
-
[Python] zip - 데이터 묶기Programming/Python 2022. 12. 17. 14:37
zip 함수에 대해 알아보자. zip 함수는 파이썬의 기본 내장 함수로, 반복 가능(iterable)한 데이터들을 묶는 함수이다. 기본적인 사용 방법을 본 후, zip 함수의 활용도가 높은 for 문을 이용해 더 알아보도록 하자. 1. zip 기본 사용 zip 함수의 기본적인 사용 방법은 두 데이터를 묶는 것이다. (여러 개의 데이터를 묶을 수 있지만, 간단하게 두 개로 진행하도록 하자.) 아래의 사진을 보면 number와 rainbow를 묶어 num_rainbow를 만들었다. 두 개의 list 데이터를 묶어 새로운 list를 생성한 것이다. 이러한 코드가 zip 함수의 기본적인 사용 방법인데, list뿐 아니라 다른 타입도 생성이 가능하다. 2. unzip unzip은 zip을 해제하는 기능이다. 하지..
-
Level 23 - hell_fireWargame/L.O.S 2022. 12. 14. 09:09
Level 23 - hell_fire를 풀어보자. 새로운 공격 기법을 사용하였다. 이번 문제는 order 파라미터에 값을 넣어 order by를 이용해 공격을 수행해야 할 듯 하다. order에 1을 넣어 order by 1 을 만들었다. 이것의 의미는 첫 번째 Column인 id를 기준으로 정렬을 하겠다는 것이다. 그래서 출력된 결과로 admin 데이터가 먼저 나오고 rubiya 데이터가 나왔다. 그렇다면 존재하지 않는 Column을 기준으로 정렬을 하면 어떻게 될까?? order에 0을 넣어 order by 0이 실행되게 해보았다. 그 결과 출력되는 데이터가 없는 것을 확인할 수 있다. 이 두 가지 사실을 이용해, 이번 문제는 if 문을 활용한 참, 거짓으로 해결해보도록 하자. id에 'admin'을..
-
[L.O.S] Level 22 - dark_eyesWargame/L.O.S 2022. 12. 12. 19:43
Level 22 - dark_eyes를 풀어보자. 문제의 코드를 보면 앞의 iron_golem에서 col과 if, case, when이 추가로 필터링된다. 비슷한 문제인 듯 하니, 이번에도 참과 거짓을 통한 에러를 이용하면 되지 않을까?? 우선 에러가 나도록 입력을 해보자. pw에 싱글쿼터(')만 입력을 했더니, 빈 페이지가 나왔다. 이번 문제는 mysqli_error 시 빈 페이지로 exit를 하도록 설정되어 있다. 그리고 앞의 문제와 마찬가지로, 참을 입력해도 출력되는 문구가 없다. 이번에는 if 문을 사용하지 못하는데 어떻게 해결을 해야될까?? (case ~ when도 if 문과 비슷하게 활용할 수 있지만 여기에서는 사용할 수 없다.) 앞의 문제는 if 문을 활용해 참과 거짓일 때, 에러와 정상을 ..