본문 바로가기

워게임

(18)
los rubiya - 23(hell_fire) 풀이 시작하겠습니다. union을 못쓰는데 admin의 email을 찾아야만 하네요 그럼.. 일단 order에 1을 입력해 보겠습니다. ?order=1 1이면 저렇게 나오네요 그럼 한번 if문을 사용해 보겠습니다. ?order=if(id='admin' AND length(email)=0,1,100) 참이면 1 거짓이면 100 나오게 했습니다. 무조건 거짓이니깐 100이 나오겠죠? 이번엔 ?order=if(id='admin' AND length(email)>0,1,100) 참으로 해서 1 나오게 하겠습니다. 1 즉 참이면 admin이 맨 윗줄 나오고 100 거짓이면 admin이 2번째 줄로 밀려나네요! 0은 안되냐고 물으실 수 있는데 이 if절을 하고 나면 결과가 상관없이 admin이 맨 아랫줄에 나옵니다. ?..
los rubiya - 22(dark_eyes) 풀이 안녕하세요 저번에 이어서 계속 풀어보겠습니다. 이젠 if문을 막고 저번 문제처럼 비밀번호를 찾아야 하는 문제네요 더군다나 if(mysqli_error($db)) exit(); 이렇게 문법 오류가 나면 아예 종료하게 해놨네요! 그럼.. 저는 union을 이용하겠습니다. 일단 만약 select 1을 하면 1이 출력이 되잖아요? 그럼 select 1>0 이렇게 하면 1은 0보다 크니 참이잖아요? 그러니 1이 출력이 되어서 select 1이 출력을 하게 됩니다. 더 나아가서 select 1 union select 1>0 이면 어떻게 될까요? 그럼 결국 select 1 union select 1 이 되어서 1이 출력이 될 겁니다. 만약 select 1 union select 1>2 이면 select 1 union..
los rubiya - 21(iron_golem) 풀이 안녕하세요 오늘은 한 문제만 풀고 끝내겠습니다. sleep을 막았고 benchmark 함수는 sleep 함수와 같은 역할 한다고 합니다. 더군다나 Hello admin 이라던가 Hello guest가 안 나와서 참 거짓 판별하기 어려울 것 같습니다. 그리고 admin의 pw을 찾아야만 이 문제가 해결이 되네요. 이번엔 쉬운 거 같네요 blind sqli 인젝션을 이용하면 될거 같습니다. ascii와 substring으로 한 글자 한 글자 찾으면 되겠죠! 이렇게 풀어도 되구요 근데 ' 을 입력해 보겠습니다. 에러문이 나오네요! SQL의 실행했는데 문법이 오류가 나면 그 오류문이 나오게 되어있습니다. Error based SQLi 공격이 통하겠네요 만약 모르신다면 https://mynameisarke.tis..
los rubyia - 19번 20번 풀이 안녕하세요 저번이랑 이어서 계속 풀어 보겠습니다. 왜 regex와 like을 막은 건지 모르겠네요 일단 딱히 ' 을 막은 것도 아니니 length 함수 이용하여 admin의 pw 길이을 알아보겠습니다. 그럼 substring 함수랑 ascii 함수를 이용해서 값들을 일일이 찾아보겠습니다. import requests import urllib.parse #******parameter:[파라미터이름],parameter value: [파라미터값],word: [식별용단어] ------ ctrl+h 이용하여 바꾸기******** url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php" #공격할 url 작성 headers = { "..
los rubiya -17,18풀이 안녕하세요 이번에도 이어서 풀어보겠습니다. 17번 strrev을 써서 거꾸로 나오게 했네요 게다가 addslashes로 특수기호를 못쓰게 막았고요 그럼 거꾸로 쓰면서 우회를 하면 되겠죠 그리고 addslashes의 함수는 특수 기호 앞에 \ 을 붙여서 문자열 취급을 합니다. 이걸 이용해서 id 에 작은따옴표를 문자열 취급하게 유도하겠습니다. id="&pw=%23 1=1 RO 이렇게 보내면 됩니다. id에는 " 을 pw에 %23 1=1 RO 보내면 select id from prob_zombie_assassin where id='"\' and pw='OR 1=1 #' 이렇게 됩니다. " 에 생긴 \ 이 거꾸로 되어서 \" 아닌 "\ 되어서 뒤에 있는 작은따옴표가 문자열이 취급이 됩니다. 그리고 id는 "\..
los rubiya -14,15,16 풀이 안녕하세요! 이번에도 los rubiya을 풀어보겠습니다. 생각보다 문제가 많아서 당황을 하게 되네요 어쨌든 끝까지 깨보겠습니다. 시작하죠 자세히 보니 shit이라는 변수가 from 사이에 들어가네요. 근데 길이는 무조건 1글자여야만 하네요 결과가 1234가 나와야 한다는데.. query문을 보니 from문이 붙여서 져 있어서 에러가 나는 것 같아요! 그래서 공백을 이용하자니 막혀 있네요. 하지만 저희에겐 공백을 우회하는 방법이 있습니다. 공백: 스페이스바 한번 누르거나 %20 도 있죠 + 도 공백입니다. 또한 %0a 와 %0b, %0c, %09,/**/ 도 공백을 대신할 수 있습니다 한 번 %0b로 줘보겠습니다. 간단하네요 다음! 15번 이상하게 pw을 = 말고 like로 인증을 하고 있네요 정말 이상..
los rubiya -11,12,13 풀이 안녕하세요! 이번에도 SQLi 전용 사이트에 있는 문제들을 풀어보겠습니다. 11번 or이랑 and이랑 substr(, = 을 못쓰게 했네요! 그리고 4번 문제처럼 또 id가 admin인 pw을 써야만 합니다. 그럼 간단하죠 파이썬 코드에 substr이 아닌 substring(을 쓰고 or 대신 || , and 대신 && 그리고 = 대신 like 쓰면 문제가 해결될 거 같습니다. 전에 작성한 코드에서 url이랑 기호들을 바꾸겠습니다. import requests import urllib.parse #******parameter:[파라미터이름],parameter value: [파라미터값],word: [식별용단어] ------ ctrl+h 이용하여 바꾸기******** url = "https://los.rub..
los rubiya -6,7,8,9,10 풀이 안녕하세요! 이번에도 저번 포스팅에 이어서 계속 풀어보겠습니다. 생각보다 재밌네요 6번 스타트 이번에 보니 or 구문과 and 구문을 안 쓰고 id을 admin으로 접속하라네요 게다가 쿼리문을 보니 id가 guest로 고정되어 있습니다. 그럼 특수 기호를 사용해 보겠습니다. or은 || 으로 and는 &&으로 해보겠습니다. pw=' || id='admin 작성해 보겠습니다. 쉽네요 이렇게 or이나 and문은 특수 기호인 ||와 && 을 대신 이용 가능하니깐 알아둡시다! 다음 7번! 이번에도 마찬가지네요! or이랑 and을 사용 못하게 했습니다. 근데 마지막 문장에 $result['pw']값이 admin 꺼야만 되고 저희가 작성한 값이랑 일치해야만 한다고 합니다. 그러니 or이랑 and을 안 쓰고 admi..