본문 바로가기

워게임32

[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.
[los 문제풀이] WOLFMAN // 힌트를 제공 해드릴뿐, payload는 알려드리지 않습니다. 위에 보이는 문제에서 핵심인 부분만 이해해보자. 첫 번째 preg_match : 파일에 직접적으로 접근할 수 없도록 입력값에 prob _ . ( )을 막아둠. 두 번째 preg_match : 입력값에 공백을 막아둠. url로 pw를 받는 쿼리문에서 id가 admin이라면 풀리는 문제이다. 그럼 쿼리문에 'or id='admin 를 쓰면 될 거 같은데 공백이 막혀있다. 대체할 방법은 뭐가 있을까? 공백 대신 사용할 수 있는 것들 1) 탭 : %09 2) 주석 : /**/ 3) \n : %0A 그외 %0B %0C %0D 가능 혹은 공백을 사용하는 or 말고 다른 걸 사용하면 되는 거 아닌가. or 대신 사용할 수 있는 것 1) || 풀었다. 2020. 4. 28.