목록Lab (221)
cdor1's lab
USER-AGENT를 건들여서 푸는 문제 같다. index.phps를 보니까 agent값을 가져와서 그 값을 mysql_query로 넣어준다. 그리고 그 쿼리로 뽑아온 값이 admin이라면 solve()를 불러준다.()와 , #를 필터링 하지 않으니까 sql injection이 가능 할 것 같다. cdor1라는 agent로 ip가 127.0.0.1이고 id는 admin이게 db에 넣는다. 뒷부분은 쿼리 에러를 막기 위해 #주석으로 처리해줬다.이렇게 한번 넣어주고 agent를 cdor1로 바꿔서 보내주면 id가 admin이 되니 문제가 풀린다.
귀여운 프로그램이다. 아마도 프로그램이 실행되면서 코드가 복구되는 것 같은데, PEID로는 아무것도 보이지 않아서 call 목록을 보았다. strcmp라는 함수가 있길래 내가 입력한 값과 비교하는 것 같아서 bp를 걸고 실행했다. 생각했던 대로 vbaStrCmp함수에 bp가 걸리고 비교하는 값이 스택에 보이게 되어 키값을 알아낼 수 있었다.
3번과 동일하게 name이 CodeEngn일 때 serial을 구하라고 한다. 반복문을 돌리면서 압축된 내용을 xor하며 풀어주는데 패킹을 풀어주는 과정이다. strcmp함수를 부르길래 bp를 걸고 name과 serial을 넣어주었다. 슥-삭!
*, /, or, %20 등등 sql injection에 쓰일만한 값들은 모두 필터링한다. union select 구문을 이용해서 2라는 값을 만들어주면 되는데,소스에서 전송해주는 query문이 ()로 닫혀있어서 공격 구문에도 ()를 넣어주는 것을 주의해야 한다. 2의 값을 필터링하기 때문에union select 2가 아닌 union select 1+1로 넣어주었다.그리고 %20 == 공백을%0a == linefeed*linefeed란? 커서를 현재 행의 다음 행으로 옮겨주는 특수 문자*를 사용해서 공백을 치환해준다. ?val=3)%0aunion%0aselect%0a(1+1을 넣으면 성공
약 1년동안 시스템 해킹 하면 할줄아는게 ctf문제풀기, 문제내기 밖에 없어서이악물고 문제만 풀어왔는데버그헌팅을 배워서 mips공부도 할 겸 버그헌팅을 해보고 있다.재밌기도 하고 가상환경에서만 해왔던 해킹을 실제로 하니까 동기부여가 되기도 하고너무 대회에 연연하지 말고 가끔씩 이렇게 흥미를 부여해줄 만한 경험을 하는 것도 중요한 것 같당내가 그동안 공부했던 지식으로 또 할 수 있는게 뭐가 있을까?
보호되어 있는 글입니다.
name과 serial을 넣어 비교하는 프로그램이다. CodeEngn이 name일 때 serial을 구하라는 것을 봤을때 name값과 연산을 해서 serial을 만드는 것 같다. 분석 하는 도중 GetDlgItemTextA함수로 입력을 받는데 Name값의 길이와 3을 비교해서 3보다 크다면 jmp하지 않는다.바로 밑에는 wrong을 출력해주는 함수가 기다리고 있다.우리가 입력한 CodeEngn의 길이는 8바이트이므로 저 체크에 걸리게되는데cmp eax, 8로 바꿔서 jmp할 수 있게 도와준다. 우리가 입력한 Name 주소를 eax에 넣고 연산한 뒤 strcmp로 연산된 Serial과 입력한 Serial을 비교한다. 답 : 3265754874
문제에 들어가면 이렇게 login과 join 메뉴가 있다.join메뉴는 누르면 alart만 작동되고 아무런 동작을 하지 않는다. login메뉴는 injection을 시도해 보았지만 wrong pw만 출력하는 걸로 봐서는 injection이 불가능하다. 그래서 join메뉴를 들어가야겠다고 생각했는데login메뉴의 url이http://webhacking.kr/challenge/web/web-05/mem/login.php이니까http://webhacking.kr/challenge/web/web-05/mem/join.php로 접속해주면 join메뉴가 나오지 않을까 했다. 들어가니, 까만 화면밖에 보이지 않았고 그 페이지의 소스는 이랬다. 개발자 도구를 이용해서 어느정도 난독화를 풀어주니 oldzombie라는 c..
base64 -> sha1 ->sha1decode