본문 바로가기

워게임/LoS13

[los 문제풀이] giant shit을 get방식으로 넘겨주고, 쿼리문을 보면 from 뒤에 shit이 이어진다. 저 쿼리가 정상 작동하기 위해서 우리는 shit에 공백을 넣어주어야 한다. 따라서 공백을 url로 넘겨줘야 하는데, 공백을 넘겨주면 hehe로 빠진다. 필터링되는 것이다. 일반적으로 알고 있는 공백 우회 방법은 아래와 같다. 1. Tab : %09 2. Line feed(\n) : %0a 3. Carrage Return(\r) : %0d 4. 주석 : /**/ 5. 괄호 : () 6. 더하기 : + 하지만 위의 공백 우회 방법들도 필터링되고 있으니, 이 외의 공백 우회 방법을 찾아본다. %a0, %0b, %0c, %20 등이 존재한다. 이 중에서 %0b, %0c를 입력하면 문제가 풀린다. 2020. 8. 14.
[los 문제풀이] SKELETON ※ 해당 문제풀이는 힌트 제공일 뿐, payload를 알려드리지 않습니다. 이 문제는 아주 쉽다. 우리가 los를 풀면서 '(작은따옴표) 쓰임과 and/or 연산이 위험하다는 걸 알았다면, 쉬울 것이다. 코드를 봐보자. 해당 코드도 id가 admin이면 풀리는 문제이다. 의심쩍은 함수도 없고, preg_match()로 걸러지는 특수문자들이 부실하다는 것을 느꼈을 것이다. 그럼 '(작은따옴표)와 or을 사용해서 문제를 풀 수 있을 텐데,, 못 풀 수도 있으니 나는 id=admin, or 2개, ' 4개를 사용해서 풀었다. 잘 조합해보자. 클리어 2020. 4. 29.
[los 문제풀이] vampire ※ 해당 풀이는 힌트 제공일 뿐, payload를 알려드리지 않습니다. 입력한 id가 admin이면 vampire 문제는 풀린다. 문제가 되는 부분은 어디라고 생각되는가? - strtolower() 함수 : 문자열에서 대문자를 소문자로 변환시켜준다. - str_replace(a, b, str) 함수 : str 문자열 내에 첫 번째 문자열(인수 a)을 가질 경우 두 번째 문자열(인수 b)로 치환해준다. 대문자를 써봤자 소문자로 변환되니, str_replace() 함수를 우회해야겠다. admin을 중심으로 admin 문자열을 잘라 앞 뒤로 넣으면 admin이 지워지면서 앞 뒤로 넣은 문자열이 합쳐진다. str_replace()이 우회할 수 있었다. 풀었다. 2020. 4. 29.
[los 문제풀이] troll ※ 해당 풀이는 힌트 제공일 뿐, payload를 알려드리진 않습니다. id가 admin이면 풀리는 문제이다. 앞에서부터 한 줄씩 코드를 확인해 가보자. admin이라는 단어를 막아주는 preg_match() 함수를 볼 수 있다. 여기서 우리는 i가 빠져있는 걸 볼 수 있다. i의 기능은 무엇이냐? 대소문자를 구분하지 않는 역할을 한다. 풀었다. 2020. 4. 29.
[los 문제풀이] orge ※ 해당 풀이는 힌트 제공일 뿐, payload를 알려주지 않습니다. 위에 보이는 전체 php코드에서 우리가 핵심적으로 봐야 할 부분이 세 가지가 있다. ① preg_match로 걸러지는 문자 혹은 특수문자들. ② url로 보낸 pw가 addslashes함수를 통해 다시 재정의되는 점. ③ 조건문을 보면 DB안에 있는 pw($result(['pw'])와 url로 받은 pw값($_GET['pw'])이 같아야 한다는 점이다. ** 이때, id가 admin의 pw이어야하므로 쿼리문도 헷갈리지 않게 잘 확인하자. 특히나 우리가 세번째 핵심부분 if문을 통해 우리가 패스워드를 알고 있으야하는 부분이므로 Blind SQL Injection을 사용한다. 이제 무얼해야할까? 첫번째. admin의 패스워드 길이 구하기 .. 2020. 4. 28.
[los 문제풀이] darkelf ※ 힌트 제공일 뿐, payload를 알려드리진 않습니다. 비교적 쉬운 문제이다. 여기서 핵심은 preg_match로 or과 and 가 막혀있는 것이다. 어떻게 우회해야할까? or 우회 : || and 우회 : && 풀었다. 2020. 4. 28.