Wargame/LOS

    [LOS] darkknight 풀이 (st.12)

    풀이 역시나 Blind SQLi이다. 이번엔 Filtering문이 2개이다. 1. pw는 싱글 쿼터를 Filtering한다. 2. no는 ', substr, ascii, =을 Filtering한다. no값은 따로 확인을 안하니, no를 이용해 SQLi를 수행해보자. 다음 Query문으로 pw의 길이를 알아낼 수 있다. Query: ?pw=1&no="1" or id like "admin" and length(pw) like 8%23 이제 파이썬 코드를 이용해 pw값을 알아내자. 마찬가지로 대소문자에 유의하자.

    [LOS] wolfman 풀이 (st.5)

    풀이 이 문제도 기본적인 SQLi랑 비슷하다. 단, 공백을 filtering 한다는 점이, 다른 문제와 다르다. whitespace filtering을 우회하는 방법은 여러가지다. Query: ?pw=1'%0dor%0did='admin'%23

    [LOS] ORGE 풀이 (st.7)

    풀이 전 문제에 나왔던 Blind SQLi 방식이다. 단, or와 and 문자열을 Filtering 한다. or -> || and -> %26%26으로 치환하였다. 먼저 pw의 길이를 구해보자. length는 부등호를 사용하면 금방 값을 추론할 수 있다. Query: ?pw=1' || id='admin' %26%26 length(pw)=8%23 pw의 길이를 알았으니, 역시 substr 함수를 이용해 값을 찾아보자. 코드는 다음과 같다. 역시, 대소문자를 조심하자.

    [LOS] zombie_assassin 풀이 (st.17)

    풀이 전 문제랑 푸는 방식은 같으나, id와 pw값에 addslashes 함수가 추가되었고, 값을 뒤집는다. 더블쿼터를 사용해 문제를 해결하자. Query: ?id="&pw=%23 1>2 ro

    [LOS] giant 풀이 (st.14)

    풀이 Query문 중간에 이상한(?) 변수가 하나 끼어있다. GET['shit']에 공백을 입력하여 정상적인 Query문으로 돌려놓자. white-space, \n, \r, \t를 필터링하니, %0b로 우회해주자. Query: ?shit=%0b

    [LOS] assassin 풀이 (st.15)

    풀이 이번 문제에서는 pw값에 싱글 쿼터를 Filtering한다. Query문에 like가 있으므로, 표현식을 이용해 pw값을 찾을 수 있다. n% -> n으로 시작하는 문자 찾기 계속해서 값을 넣어보면 pw값을 찾을 수 있다.

    [LOS] succubus 풀이 (st.16)

    풀이 이번 문제에서는 id값과 pw값에서 모두 싱글 쿼터를 검사한다. id={'GET['id']'} and pw={'GET['pw']} 형식에서, 이스케이프 문자를 이용해 함수를 우회할 수 있다. 그 이유는 다음과 같다. id='\' and pw=' 을 이스케이프 문자가 들어있기 때문에 문자열로 인식한다. 그 후, 뒤에 or 2>1%23이 해당 식을 참으로 만들어 Injection에 성공하게 된다. Query: ?id='\' and pw=' or 2>1%23

    [LOS] bugbear 풀이 (st.13)

    풀이 전 단계보다 더 강한 Filtering 규칙을 갖고 돌아온 Blind SQLi이다. 2개의 Filtering 규칙이 있다. 1. pw값은 싱글쿼터를 Filtering한다. 2. no값은 ', substr, ascii, =, or, and, white-space, like, 0x를 Filtering 한다. 생각보다 까다로운 규칙을 갖고 있어, pw의 길이를 구하는 Query문이 좀 길다. Query: ?pw=1&no="1"%0d||%0did%0din("admin")%0d%26%26%0dlength(pw)%0din(8)%23 다른 문제와 마찬가지로 pw의 길이는 8자이다. 이제 pw의 길이를 알았으니, 마찬가지로 pw값을 구해보자. 마찬가지로, URL 부분이 상당히 복잡하다. 코드는 다음과 같다. 대소..