일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java.lang.IllegalStateException
- Couldn't read row 0
- 코틀린
- Make sure the Cursor is initialized correctly before accessing data for it.
- Docker
- 포너블
- cmd2
- col -1 from CursorWindow
- 페니빙
- SQLiteConstraintException
- tlqkf
- python
- 6566
- pwable.kr
- Drive-By-Download
- 나이순 정렬
- 클라우드란?
- kotlin
- UNIQUE constraint failed
- pwnable
- pwnable.kr
- 블록체인
- 백준
- 클라우드가 뭐야
- 쏘큩
- 파이썬
- 액션바 필요없숴
- cmd1
- 애너그램 그룹
- 10814
- Today
- Total
목록분류 전체보기 (112)
푸르미르
mistake.c 코드를 보자. main함수에서는 먼저 file discriptor로 보이는 변수를 선언해주고, open 함수의 반환값인 fd와 0을 비교하는 것 같다. 하지만 연산자 우선순위로 인해 open함수의 return값과 0을 비교한 뒤, 이 결과를 고려한 값이 fd에 들어가는 것으로 된다. 왜냐하면 비교연산자인 '
leg.c 파일을 함 보자 scanf를 사용해 key 값을 입력하고, 그 key값이 key1()+key2()+key3()과 동일하면, flag 파일이 open 되는 형식이다. 뜯어서 보자. c코드를 보았을 때, mov명령을 통해 pc값을 r3에 넣는 것을 확인 할 수 있다. 디스어셈블 코드를 보았을 때, mov를 통해 r3에 pc값을 넣은 후 r0에 r3값을 넣는 것을 확인 할 수 있다. 그렇다면 pc란 무엇일 까. pc는 레지스터 중 하나로 다음 인출될 명령어의 주소를 갖고 있는 아이이다. cpu는 하나의 명령을 실행할 때 다으마과 같은 과정을 거친다. 1. fetch - 메모리에서 명령어를 가져온다. 2. decode - 명령어 읽기 및 해독, 레지스터를 읽는다. 3. excute - 연산 수행, 주..
JSP 페이지를 작성할 때, 사용할 수 있도록 JSP컨테이너에 미리 정의된 객체 JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함 JSP페이지에 별도의 import문 없이 자유롭게 사용 가능 스크립트릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용가능 내부 객체에는 모두 9개가 있음 request Request객체는 브라우저에서 jsp페이지로 전달되는 데이터의 묶음으로 HTTP헤더와 HTTP바디로 구성되어 있다. JSP컨테이너는 요청된 HTTP메시지를 통해 HttpServletRequest객체 타입의 request객체명으로 사용한다. 사용자가 입력 폼으로부터 특정한 값을 입력..
cat input.c 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know how to give input to program\n"..
접속 후 ls cat random.c unsigned 변수 random에 rand()함수의 반환값(난수)을 넣었다. key를 입력받고, key^random(XOR) == 0xdeadbeef와 같으면 flag(답)을 얻을 수 있다. 이렇게 보면 간단해보이는데 착각일 수 있으니 설레발 떨지 말아야지ㅎ 여기서 rand()만을 통해 난수를 한번 생성할 경우, 값이 고정이 되는 성질을 갖고 있다. => 컴파일을 몇번을 하더라도 난수가 같은 값이 생성된다는 뜻 gdb를 통해 컴파일하여 어셈블리어를 통해 rand()의 반환값이 무엇인지 알면 풀릴 것 같다. gdb random disas main ->main 함수 분석 체크한 부분 보면 rand 함수 호출 후 리턴값을 eax에 저장 후 0x400760이라는 주소에 저..
공개키 기반구조(Public key infrastructure, PKI)는 인터넷 사용자들 간의 신뢰를 구축하도록 만들어진 공개 프레임워크이다. 개별적인 신원을 인증하는 보안 수단을 제공한다. 사업적으로 pki를 적용하면 애플리케이션의 배포와 관리 문제가 단순해진다. 클라우드 기반 애플리케이션으로 넘어가는 추세이므로 새로운 위협으로부터 민감한 애플리케이션을 보호하는 것이 더욱 중요하다. 온라인으로 소통할 때 겪을 수 있는 보안 위협으로는 신원절취, 중간자(man in the middle, MITM)공격, 데이터 유출같은 것들이 있다. pki는 사용자들 사이(밥과 앨리스)에 신뢰할 수 있는 제 3자(TTP)를 사이에 둠으로써 밥이 상대방이 정말 앨리스인지 확인할 수 있다. TTP를 보통 인증기관(CA)가 ..
CIA 보안 3요소 1. 기밀성 - 인가되지 않은 사람들에게 정보를 숨기는 것 2. 무결성 - 인가되지 않은 부정한 변경을 방지하는 것 3. 가용성 - 데이터의 정시성과 신뢰할 수 있는 접근/ 분산 서비스 거부(DDOS), 랜섬웨어 공격은 범죄자가 지닌 가장 강력한 무기이며 이런 공격은 접근 권한을 가진 사람들이 정보에 접근하지 못하게 만든다. 이 3요소를 블록체인에 녹여보자. 1. 블록체인의 기밀성 - 네트워크 상에서 원하지 않는 참가자에게는 거래 정보를 숨기는 것. 그러나 비트코인과 같은 공중 블록체인은 개방되어 있꼬 참여를 제한할 수 없기 때문에 기밀성을 확보하는 것은 매우 어렵다. 2. 블록체인의 무결성 - 블록체인은 원장이 조작되지 않도록 암호학의 해싱을 사용한다. 이러한 해시 함수의 특징으로는..
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..
보통 icmp 페이로드 크기를 65000바이트 이상으로 설정하고 ip스푸핑 공격을 적용해 출발지 ip주소를 매 순간 임의로 변경해 전송한다. 수신축에서는 매번 분할 패킷을 재조립한뒤 icmp응답 패킷을 전송해야 하기 때문에 그만큼 과부하가 클 수 밖에 없다. 1. 공격자, 공격 대상자 서버 IP 조정 공격자/backbox 공격 대상자/xubuntu 2. 공격자 서버에 hping 설치 su - apt install hping 3. 공격자서버에서 xubuntu로 icmp날리기 28headers + 65000 data bytes 부분은 65000바이트의 icmp 페이로드를 생성한 뒤 8바이트의 icmp헤더와 20바이트 ip헤더를 붙였다는 내용을 의미한다. 4.wireshark로 65000data가 잘 갔는지 ..