전체 글
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/qr45U/btqJXVNUMz8/KvtHC0hsajKHcAGe2ISV3K/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※ 첫 화면입니다. 로그인과 회원가입이 있네요. 코드를 보니 회원가입은 안되고 로그인만 되는 것 같습니다. 로그인을 클릭해보겠습니다. 흔히 볼 수 있는 로그인 창이 뜹니다. 여기에 여러가지 sql injection을 시도해보았지만 역시나 안됩니다. 뭘까요? 그런데, 주소창에 디렉터리처럼 보이는 경로가 있었습니다. mem 디렉터리 안에 login.php가 있음을 예측할 수 있습니다. 상위 디렉터리로 가보겠습니다. mem 디렉터리 안의 내용물들이 나오네요. join.php도 보입니다. join.php에 접속해보겠습니다. 'bye'라는 문자열이 alert되고 아무런 창도 뜨지 않습니다. 자바스크립트를 확인해보니 'bye'라는 alert가 뜨게 하는 코드, 'Acc..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bmzK1f/btqJU5RLxu6/LhpsIuYfOthkVCWDdxCtCK/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※ 위에 해쉬값과 아래에 Password를 입력하는 창이 있습니다. 이게 소스코드인데요, 랜덤값 + 'salt_for_you'라는 Salt 값을 하나의 문자열로 만들어 세션 값으로 집어넣고 이 문자열을 sha1로 500번 인코딩한 뒤 출력하네요.(출력하는 코드는 원본에 있습니다.) 그러면! 페스워드가 위에서 정해진 해쉬값과 일치하는지를 해쉬값 생성보다 먼저 검사하기 때문에, 랜덤 값으로 계속 brute forcing을 한다면 알아낼 수 있겠네요. 강력한 파이썬을 통해 알아냅시돠. 먼저 단순히 생각할 수 있는 코드는 이겁니다. 운이 좋다면 빨리 찾겠지만, 90000000(9천만)건에 for문 500번을 돈다면 너무나도 오래걸립니다. 따라서, rainbow 테이..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/Es4qY/btqI7w4maCd/HV3fLiwIEwxZRdyhxp04c0/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※ 노노그램!! 고딩 때 집, 학교, 학원 오갈 때 했던 게임이네요 ㅎㅎ 재밌고 머리 쓰는 묘미가 아주 깊은 친구입니다. 후딱 풀어보죠!! 과연 정답이 맞을까요? 맞았네요! 자랑스러우니 제 이름을 등록하죠 ㅎㅎ IP가 나와서 가렸습니다. 노노그램 푸느라 워게임을 잊었네요. 아까 입력란이 있었는데 그 부분은 이름 데이터를 담당했죠. 그 부분에 sql injection을 시도해봅시다. 흠.. 아무래도 안먹히네요. 개발자도구를 통해 웹페이지 소스를 보아하니 answer 값이 hidden으로 숨겨져 보내지고 있었네요. 이 값에 sql injection을 시도해봅시다. 풀렸네요! hidden 테그를 통해 실어지는 데이터를 사용자가 모를 것이라고 생각하고 보호기법 처리..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/r3ksH/btqJii39Uf3/8lrrEn9HrMf6EZgKeCpkX1/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※ 한정된 공간이라며 이미 IP가 접속되어 있으니 수상한 사람이라고 인식한다는 문구가 뜨네요. 개발자 도구를 통해 웹페이지 소스를 확인해봅시다. 수상한 시간이 나타나고 admin.php 페이지로 간다면 혼쭐을 내준다고 하네요;; 하지말라는건 다 해봅시다 ㅋㅋ 비밀번호를 입력하는 창이 나오네요. 아무 값이나 입력했더니 Wrong이라는 메세지를 전달하는 alert 창이 나오네요. 그나저나 아까 시간이 의심되긴 하지만, 웹 공격 기법에 집중하도록 해보죠. 페스워드 창에 아무리 sql injection을 시도해도 아무런 변화가 없습니다. 그런데 쿠키 값을 보면, time이라는 쿠키가 있습니다. 아까 그 수상한 시간과 관련이 있을까요? 데이터베이스 SQL 질의에는 F..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bQl81B/btqI1EBixNI/NI8GYoQpAKPuGFuq65wHP1/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※ view-source를 통해 소스코드를 확인해보겠습니다. 원본 소스코드는 이보다 길지만, 중요한 부분만 확인해보겠습니다. 'user_lv'라는 쿠키가 숫자가 아니라면, 1의 값을 저장하네요. 또한, 5보다 크고, 6보다 작으면 solve() 함수를 통해 문제가 풀리네요. 'user_lv'라는 이름의 쿠키의 값을 5보다는 크게, 6보다는 작게 설정하면 될 것 같습니다. 콘솔 창을 통해 해결할겁니다. 크롬 브라우저에는 EditThisCookie라는 아주 좋은 앱이 있지만, 하는 맛이 없죠? 콘솔 창을 통해 문제를 해결해봅시다. F12 또는 Ctrl + Shift + i 또는 상단 오른쪽에 도구 창을 통해서 개발자 도구를 열 수 있습니다. Console을 클릭..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/ccwAu3/btqILLTtLrv/VJGLPkKceNyM5L2ZIWwqQK/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
LOB 주소로 6666 포트에서 연결을 받고 있네요. Reverse TCP Shellcode를 보내면 될 것 같습니다. qhdks.tistory.com/68 Shellcode - Shell Reverse TCP Shellcode 환경 UBUNTU 16.04.07 VMware Workstation 15 Player 개요 Shell Reverse TCP Shellcode란 Remote BOF 기법에서 쓰이는 쉘코드로, Reverse connection 방식을 이용한다. 다른 방식에는 Bind가 있으며 추후에 다룰.. qhdks.tistory.com 위에 나와있는 내용은 로컬에서만 먹히는 쉘코드였습니다. 즉, 이 문제에는 안먹힌다는 소리죠 ㅋㅋ 이 사실을 알아내는데에 많은 시간을 날려먹었네요. 그래서 앞으로 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/cLqBev/btqIvFfcADm/VurQX5hQLGq77YHjkLtRc0/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
환경 UBUNTU 16.04.07 VMware Workstation 15 Player 개요 Shell Reverse TCP Shellcode란 Remote BOF 기법에서 쓰이는 쉘코드로, Reverse connection 방식을 이용한다. 다른 방식에는 Bind가 있으며 추후에 다룰 예정이다. Reverse connection은 공격자가 미리 서버를 Binding하고 있는 상태에서 피해자가 공격자의 서버에 접속하는 방식이다. 다시 말해, Shell Reverse TCP Shellcode는 피해자가 공격자의 서버에 접속해 공격자가 쉘을 떨어뜨리는 Shellcode이다. Shellcode 제작 소켓을 만든 뒤, 로컬에서 55555포트에 연결하고 STDIN(0), STDOUT(1), STDERR(2)를 소켓..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/buZ5Qv/btqIl9ak8UL/5XmXYtDvFDLxpHPCrRqQb0/img.png)
![](https://tistory1.daumcdn.net/tistory/3918100/skin/images/no-image.jpg)
스택, LD_, 공유 라이브러리, 라이브러리 함수, 바이너리 코드. 여러가지를 못쓰네요. 보통 argv[1]을 사용할 때는 main 함수 프롤로그에서 main 함수보다 먼저 push 된다는 사실은 이미 수없이 접해왔기 때문에 알 수 있었습니다. 하지만, stdin을 통해 입력을 받는다면 어디에 저장되어있다가 buffer로 복사될까요? 인자를 보면 알 수 있습니다. 딱봐도 stdin => buffer로 들어가게 되는데요. stdin을 gdb 도구를 통해 알아봅시다. 제일 처음 들어오는 인자인 0x8049a3c라는 위치가 stdin을 가리키는 위치인 것 같네요. A 100개를 넣고 돌려보겠습니다. 아까 그 주소를 확인했더니, stdin이라는 문구에 0x401068c0이라는 값이 들어있었습니다. 또한 0x40..