pwn
-
gdb-peda에서 heap에 대한 정보 보기tmp/Tip 2018. 11. 19. 00:36
[설치] cd ~/ git clone https://github.com/scwuaptx/Pwngdb.git cp ~/Pwngdb/.gdbinit ~/ [명령어] gdb-peda$ heapinfo gdb-peda$ chunkinfo gdb-peda$ chunkptr 위 명령에뿐만 아니라 아래 링크를 타고 가면 여러가지 heap에 대한 정보를 출력해 낼 수 있는 명령어를 지원한다. Ref : https://github.com/scwuaptx/Pwngdb
-
[Toddler's Bottle] blackjack write upSystem hacking training/pwnable.kr 2018. 7. 31. 21:52
오늘을 pwnable.kr 의 blackjack - 1pt 문제를 풀이하였습니다. 문제 pt는 1pt 인데 소스코드의 양을 보고 조금 놀랐습니다. Hey! check out this C implementation of blackjack game! I found it online * http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html I like to give my flags to millionares. how much money you got? Running at : nc pwnable.kr 9009 flag는 백만장자가 되면 준다고 하네요. 사실 이 부분을 보지 않고 취약한 부분을 찾기 위해서 무작정 소스코드..
-
LEVEL 08 troll write-upSystem hacking training/Hackerschool LOB 2018. 3. 31. 20:28
orge -> troll [문제] troll.c 파일을 살펴보면 많은 조건들이 걸려있다. 그 조건들은 아래와 같다. 1. argc 는 무조건 2여야한다. 이 말은 즉 바이너리 이름 + 인자 1개가 아닐경우 종료시킨다는 것이다.2. egg hunter로 환경변수에 쉘코드를 올려도 0으로 초기화되므로 환경변수를 사용하는 것은 의미가 없다.3. argv[1] 첫번째 인자값 마지막에 \xbf 인지 검사한다.4. argument의 길이를 체크해서 48보다 크면 종료시킨다.5. strcpy() 의 사용으로 bof 취약점이 존재한다.6. one more 부분에서 argv[1]의 값을 0으로 초기화 해주면서 argv[1]에 쉘코드를 올리더라도 사용할 수 없다. 결론 : buffer hunter로 인해서 buffer에 ..
-
level 19. 풀이System hacking training/Hackerschool F.T.Z 2018. 1. 6. 20:52
all clear 까지 얼마 안남았네용 ㅎ 풀이 시작합니다. 로그인 후 힌트파일을 열어보면 이와 같은 소스코드가 출력됩니다. 기존 문제와 다른 부분은 setreuid()함수가 없는것입니다. 하지만 ls -al attackme 로 attackme의 권한을 확인해 보면 이렇게 setuid가 걸려있는것을 확인 할 수 있습니다. 또한 gets()함수에서 문자열의 길이를 지정하지 않는점을 이용하여 bof 공격을 할 수 있습니다. 스택구조를 확인하기 위해 gdb로 disassemble 해보면 힌트파일의 소스코드와는 다른 40을 할당한것을 알 수 있습니다. dummy 값이 20이 들어간것이죠. 이제 공격 시나리오를 생각해보면 의미 없는 값을 40바이트로 dummy와 버퍼를 덮어고, SFP 를 4바이트로 덮고, 마지막..
-
level 18. 풀이System hacking training/Hackerschool F.T.Z 2017. 12. 24. 20:40
안녕하세요 살충제입니다. 오랜만에 f.t.z를 풀어보네요.. 시험기간+프로젝트+발표준비로 너무 바쁜 하루를 보내왔습니다.ㅎㅎ 시험은 끝났지만 여전히 바쁘네요..ㅠ_ㅠ 아무튼 오늘 level 18을 풀이해보았는데요. 풀이를 시작합니다. ^____________^ 로그인 후 hint 파일을 열어보시면.. 소스코드가 아주 길게 나옵니다.....ㅎ #include #include #include #include void shellout(void);int main(){ char string[100]; int check; int x = 0; int count = 0; fd_set fds;-> 구조체/FD == 파일 디스크립터의 줄임 표현 printf("Enter your command: "); fflush(stdo..
-
0x1. PC 내부구조System hacking training/Windows 2017. 12. 6. 09:42
참고 서적 : 윈도우 시스템 해킹 가이드 / 김현민 지음 해킹을 공부하고 Exploit 코드를 작성하기 위해 pc 내부구조, 어셈블리어, 기계어 등을 알아야합니다. 윈도우는 현재 많은 공격자들의 타겟이 되고 있는 운영체제 중 하나 입니다. 해킹을 하기 위해서 많은 기반 지식을 요구하는데요. 먼저 cpu, 레지스터에 대해 설명드리겠습니다. [CPU] 윈도우 운영체제에서 동작하는 프로그램을 공격하기 위해 컴퓨터의 두뇌라고 할 수 있는 CPU에 대해서 알아야합니다. CPU 는 연산장치, 제어장치, 레지스터로 구성되어있고, 연산장치는 수학적 연산을 하는 장치(논리연산), 제어장치는 메모리에서 기계어 코드를 읽고, 해석한 뒤 실행, 레지스터는 연산을 위한 데이터를 저장하는 역할을 합니다. 레지스터에 대해서 좀 더..
-
level 17. 풀이System hacking training/Hackerschool F.T.Z 2017. 12. 3. 19:03
저는 해커스쿨 f.t.z를 풀이할때 한가지 습관이 있는데요. 문제 비밀번호를 획득하면 바로 풀어보는 습관입니다. (다들 그러실듯하지만..) level 16을 풀이하고 바로 level 17을 풀이하였는데 우연히 풀게 되어서 풀이를 작성하게 되었습니다. 기존에 나와있는 풀이와는 다를것으로 예상이 되고, 출제 의도와는 다르게 푼거같아서 어떨떨합니다만... ㅎㅅㅎ 풀이를 시작하겠습니다. 로그인 후 힌트파일을 열어본 결과입니다. 역시 함수 포인터로 printit() 의 시작 주소를 담고 있는것을 확인 할 수 있습니다. 하지만 이전의 문제와는 다르게 shell() 가 보이지 않네요. 대신 main()에 level 18의 권한을 주는것이 보이는데요. 풀이를 하기 위해 취약점을 찾아야겠죠? 이제는 바로 보일것같습니다...