일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 6566
- 나이순 정렬
- tlqkf
- python
- 페니빙
- cmd1
- 클라우드란?
- Couldn't read row 0
- 액션바 필요없숴
- pwnable.kr
- 포너블
- pwnable
- kotlin
- Docker
- java.lang.IllegalStateException
- 10814
- Drive-By-Download
- col -1 from CursorWindow
- 애너그램 그룹
- 백준
- 코틀린
- SQLiteConstraintException
- cmd2
- 블록체인
- pwable.kr
- 쏘큩
- 파이썬
- UNIQUE constraint failed
- 클라우드가 뭐야
- Make sure the Cursor is initialized correctly before accessing data for it.
- Today
- Total
목록SECURITY/pwnable (16)
푸르미르
접속 후 ls cat random.c unsigned 변수 random에 rand()함수의 반환값(난수)을 넣었다. key를 입력받고, key^random(XOR) == 0xdeadbeef와 같으면 flag(답)을 얻을 수 있다. 이렇게 보면 간단해보이는데 착각일 수 있으니 설레발 떨지 말아야지ㅎ 여기서 rand()만을 통해 난수를 한번 생성할 경우, 값이 고정이 되는 성질을 갖고 있다. => 컴파일을 몇번을 하더라도 난수가 같은 값이 생성된다는 뜻 gdb를 통해 컴파일하여 어셈블리어를 통해 rand()의 반환값이 무엇인지 알면 풀릴 것 같다. gdb random disas main ->main 함수 분석 체크한 부분 보면 rand 함수 호출 후 리턴값을 eax에 저장 후 0x400760이라는 주소에 저..
VM껐다가 다시 켰더니 접속 안됨. 좋아하던 찰나 Toddler's Secure Login System 1.0 beta. \n이 print된 후, welcom() 함수가 실행. welcom() 함수는 name을 입력받아 Welcome $name을 출력 후 end login()함수 실행. passcode1을 입력받고 입력버퍼 지우기. //32비트는 브루트포싱에 취약하다고 한다. passcode2를 받고, passcode1이 338150과 같고, passcode2가 13371337과 같으면 login ok => flag 보여줌 이때 이 코드에서 이상한 점이 하나 있는데, scanf로 입력받을 때 주소값을 넘겨준게 아님. => 이게 warning이 난 이유 아마 이 파일을 실행시켰을 때, passcode1 에..
리버싱에 관련있는 거 같은데 문제에서 하라는 대로 다운을 받았다. 다운 받은 파일에 대해 궁금하니 ls -al 해당 파일을 실행파일로 바꿔보자 chmod +x flag 실행파일로 바꾼 flag파일을 실행시켜보자 I will malloc() and strcpy the flag there. take it. => malloc,strcpy, flag를 그곳에 둘것이니 가져가시오. 이것으로 본다면 flag는 c언어로 작성된 파일이라는 것을 알 수 있다. gdb로 flag 파일을 디버깅 하려했더니 No debugging symbols found in flag => 가능성 1. 파일 손상 2. 암호화 되어있어 읽지 못함 flag파일을 윈도우로 가져와서 freeware을 돌려보았다. 맨아래 unpack info에서 d..
bof 매우 중요한 buffer overflow 일단 파일들을 다운로드 받자. cat bof.c func에 들어온 key value가 0xcafebabe과 같으면 쉘을 실행시킬 수 있다. 하지만 이미 main에서 key에 0xdeadbee를 주었기때문에 불가능하다. 이 문제의 키포인트는 gets함수이다. gets함수는 입력으로 들어온 문자열을 c언어 스타일의 문자열 char[] 타입으로 저장해주는 함수이다. gdb 모르겠다. 튄다.
collision 충돌 해시 충돌에 대한 문제인 것 같다. ssh col@pwnable.kr -p2222로 가자 ls -al명령어 사용 flag는 권한이 안되니까 못보고, col.c를 살펴보자. 좀 짤렸다.ㅎ passcode length가 20bytes가 되어야 한다. 또 hashcode와 check_password(argv[1])가 같으면 flag를 볼 수 있다. python을 열어서 hashcode의 값을 5로 나누고 그 값을 합하여 res로 넘겨준다면 hashcode와 동일할거라 생각하였다.
포너블이란 운영 체제나 소프트웨어, 하드웨어에 내재된 보안 취약점을 해킹하는 것. 흔히 리트에서 따온 pwn을 써서 포너블(Pwnable)이라고도 부른다. 오늘은 pwnable.kr의 1번 문제 fd를 풀어보자. 문제이름이 fd 인데 file descriptor을 연상케한다. 이게 힌트일까? 문제 내용을 살펴보자. beginner이면 해당 유튜브 링크로 들어가서 보라는거고, 그 아래 ssh fd@pwnable.kr -p2222로 가라는 것같다. 결국 알아야 하는 것은 flag인 것이다. 리눅스 창에서 들어가보자. fd유저로 ssh로 pwnable.kr애 접속하라는 것인데, - p옵션을 보면 default ssh port 대신 2222포트로 하라는 것이다.(passwd: guest) 내 리눅스에는 ssh가..