[LOS]21번 iron_golem 아이언 고램! 키가 나보다 커보인다;; 이것저것 넣어보니 그동안에 했던 방법으로는 참거짓을 분별할 수 없음을 알았다 어쩌지 어쩌지 고민하던중 잘못된 문법을 넣으면 에러를 확인할 수 있음을 알게되었다. .... 하지만 난생처음보는 환경에 당황한 G0pher... Error based SQL injection이 떠올라 공부해봤지만 에러를 통해 원하는 데이터를 출력하려 하니 언더바(_)와 점(.)이 필터되어버려서 다른 방법을 생각해야했다 이름하여 Error Based Blind SQL Injection!!!(사실 내가 지었다) 뭔가 있을것 같아 검색해보니 진짜 있었다 아무튼 IF문을 통해 참과 거짓을 에러로 구분할 수 있도록 하는 방법이다. 그전에 알아둬야할 기본적인 지식은 IF문이다. Mysql에서 IF문은.. Wargame/LOS(eagle-jump) 8년 전
[LOS]20번 dragon 귀여운 드래곤이 나를 반긴다 클릭해보자 음... id를 guest로 고정시켜놓고 뒤를 주석처리했다. 잠시 고민했다. 정말 잠시 그리고는 해결!! #은 한줄주석이기 때문에 이를 이용해서 %0a를 넣어주어 개행을 시켜주고 명령을 넣었다. 어렵지 않았던 문제였던것 같다. Wargame/LOS(eagle-jump) 8년 전
[LOS]18번 nightmare 나이트메어.. 굉장히 힘든문제였다...ㅠㅠ 굉장히 조건이 까다로워서 힘들었다. 길이가 최대 6글자까지만 입력가능하다.... 닫는 쿼터,괄호,주석만 해도 반이상을 써버리는데 조건은 언제 쓸 수 있는건지.... '어떻게 풀지?' 라는 사고에 싸여 방황하던중 몇시간이 지나고서야 어디에 중점을 두어야할지 감이 잡히기 시작했다. 아무래도 뒤의 쿼리문때문에 주석은 필요한게 맞는것 같다. 그렇다면 주석을 우회하는 방법은? ;%00 ;과 NULL 두글자를 사용해야한다. 주석을 사용한다면 손수 싱글쿼터와 괄호를 막아주어야하니 두글자를 더 써야한다. 즉 ');%00 현재까지 총 4글자를 사용했다. 나머지 두글자를 이용해 참을 만들어야한다. 이 부분에서 한번 더 막힌다. 남은 글자는 총 두글자 참으로 만들기 위해선 하나는 .. Wargame/LOS(eagle-jump) 8년 전
[LOS]17번 succubus 서...서큐버스님? 좋다 따라가자 정말 나를 너무나도 힘들게 만들었던 문제이다... 서큐버스님...ㅠ 너무행 아주 잘 짠것같은 코드인데 풀어내라니.... 몇시간동안 가만히 앉아 생각해도 답이 나오지 않았다. 슬프게도 이번문제는 스스로 풀어내지 못했다...ㅠㅠ 도대체 내가 무엇을 건드려야할지 감이 안왔기 때문이다... 우선 이 문제는 쿼터가 막혀있다.... 그래서 무언가를 하고싶어도 문자열의 밖으로 나오지 못해서 애를먹고있었다. 이걸 낸사람은 도대체 얼마나 똑똑할까.... 기존의 쿼터를 문자로 바꿔버리면 되는것이다! 아래와 같이 비밀번호까지를 문자열로 취급하게 한 후에 그 뒤는 or을 통해 참값을 만들어내면 된다. 알고보면 참 쉬운 해결법이다..... 생각해내기가 어려웠지... Wargame/LOS(eagle-jump) 8년 전
[xcz.kr]Web Basic xcz.kr의 web basic이라고 하는 문제이다. 쉽긴한데 매우 귀찮은 문제였다... 우선 소스를 보자 이건 무엇을 위한 문제인가...... 일단 보기 힘드니 복붙해서 정리하자 이제야 좀 나아진것 같다. 코드를 보면 최종적으로 test함수를 통해나온 반환값을 비교한다. Line-By-Line 설명은 생략하고 전반적으로 설명하자면 각 자리의 아스키코드값을 바(-)를 통해서 구분하는 함수가 test이고 그것이 되어야 하는 값이 있다. 우선 무엇이 되어야할지부터 알아보자 iss에 givemepassword라는 키워드를 만들어내면 되는것 같다. iss는 GET으로 들어온 값에 COOKIE에 있는 값을 더한것이므로 둘이 이어서 저 문장이 되도록 만들어보자 POST버튼을 만들어 action주소에 URI를 붙여 .. Wargame/etc 8년 전
[LOS]16번 zombie_assassin 으 징그럽다 좀비가된 어쎄신이다..... 빠르게 눌러버자 꽈악 막힌느낌이다. 다행인건 ereg함수를 통해 필터링하고 있다는 점이다. 저번에 친구와 여러 이야기를 나누다가 ereg 취약점에 대한 이야기가 스쳐지나갔었는데 그날 찾아본 바로는 ereg함수는 NULL까지만 검사를 한다고 했다. 즉, NULL 뒤에는 필터링을 하지 않는다는 것이다 %admin' or id='admin' --%20 이렇게 인젝션을 하자 풀렸다. 밑의 쿼리를 보면 알겠지만 null을 넣어도 admin이 되어버리는데 굳이 id=admin을 한번 더 넣어줬는지 의문이 들 수 있다. 그 이유는 NULL이 여기서는 하나의 인덱스를 가지고있기 때문이다. 그렇기 때문에 실제로 크기를 출력해보면 %00admin => 6글자 admin => 5글자.. Wargame/LOS(eagle-jump) 8년 전
[LOS]15번 assassin 좀 멋있는 친구가 나타났다 클릭해보자 like가 고정되어있고 쿼터가 막혀있기 때문에 보이는 그대로 like를 이용해야 할것같다. (http://g0pher.tistory.com/182) %%를 입력하니 guest가 뜬다. 첫글자부터 하나씩 찾아야 한다는 건데 출제자가 admin과 guest의 pw를 앞 몇글자가 동일하도록 만들어놓았을것 같다. 꽁으로 문제를 주진 않았을테니까? 코딩을 하자 12345678910111213141516import requests URL = 'http://los.eagle-jump.org/assassin_bec1c90a48bc3a9f95fbf0c8ae8c88e1.php'head={ 'cookie' : 'PHPSESSID=r3k3; __cfduid=d437' } for i in .. Wargame/LOS(eagle-jump) 8년 전
[LOS]12번 darkknight 이번에는 다크나이트가 등장했다 얼마나 대단한 놈인지 소스코드를 보자 ㄱ...그...강력하다! 그래도 침착하게 풀어보자 하단부를 보니 비밀번호를 알아내야지만 풀어낼 수 있음을 알 수 있다. 다행히 no에 쿼터가 없는걸 보니 변수 no를 이용해 푸는 문제인것 같다. no를 이용해 인증해보자 등호가 필터링되어서 할일이 더 늘게된것 같다. guest가 첫번째로 등록된 사용자임을 알 수 있다. 숫자를 늘려가며 admin을 찾아보자 guest는 no=1admin은 no가 1보다 큼을 알 수 있다. 여기까지 참이므로 참 거짓을 이용해서 문제를 풀어보자 패스워드의 길이는 7에서 참 8에서 거짓이므로 8이된다. 비밀번호 길이가 아주 착하다 하지만 여러모로 귀차니즘이 발생하니 더이상 직접 노가다는 하지 말자 코딩을 하자!.. Wargame/LOS(eagle-jump) 8년 전