일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디오판투스 알고리즘
- node.js
- 웹 프레임워크
- arrow function
- 개인정보안전성
- 한국산업인력공단
- 마감임박
- 백엔드입문
- function scope
- 동적타이핑
- 한국정보보호산업협회기자단
- 모듈러 연산
- 확장 유클리드 알고리즘
- 개인정보보호위원회
- package.json
- Writeup
- 개인정보보호교육
- 가명정보처리
- 유클리드_알고리즘
- 곱셈 암호
- 국가인적자원개발컨소시엄
- 한국정보보호산업협회
- 호이스팅
- package-lock.json
- 무료교육
- pwnable.tw
- 포너블
- 백엔드
- 덧셈 암호
- 개인정보보호
- Today
- Total
짱짱해커가 되고 싶은 나

* AFL(American Fuzzing Lop) : edge coverage를 기반으로 feedback을 하는 퍼저. (일반적인 코드 커버리지는 각각의 basic block이 실행되느냐로 측정하는데, edge code coverage는 basic block이 전화되는 것을 기반으로 측정. ex) A->B, (A,B)로 표현) -> 더욱 사소하게 다음 실행 추적이 가능하며, 기본 코드에서 미묘한 오류 조건을 발견하는데 도움이 됨 (보안 취약점은 예상치 못한 문제 또는 새로운 basic block에 잘못되게 전환되는 경우와 연관되는 경우가 더 많기 때문) +) AFL은 OpenSSL, PHP, MySQL 같은 유명한 소프트웨어의 취약점을 찾는데 사용되곤 했다. afl-fuzz -i input_directo..
* Fuzzing (Fuzz testing) : 컴퓨터 프로그램에 input으로 invalid하고, unexpected하고, 랜덤한 데이터를 자동으로 공급해주는 테스팅 소프트웨어. -> 퍼징은 사람이 직접 만들지 않고도 많은 test를 실행해 볼 수 있고, 복잡한 input을 처리하는 프로그램에 있어서 효율적이며, parser를 이용한 프로그램은 퍼징하기 좋은 대상이다. (ex. 이미지 라이브러리, PDF리더, 컴파일러, objudump같은 system util, HTTP 서버 등) -> 프로그램의 크기가 대용량화대면서 사람이 직접 전체를 수동 분석하는 것은 현실적으로 불가능 -> 최종 목적은 대량의 테스트 케이스를 만들고 프로그램에 미치는 영향을 관찰하여 버그를 유발하는 인풋을 찾는 것 Q1. fuzz..

sample file : https://filestar.com/skills/j2k/ .J2k Skills With Filestar you get 171 different skills for working productively with JPEG 2000 Image .(j2k) files. filestar.com j2k 파일 구조를 확인해보자. 먼저 j2k는 jpeg에서 사용하는 파일 포맷으로, 크게 다음과 같은 파일 구조를 갖고 있다. packet이라고 불리는 data unit의 collectoin으로, code stream 안에는, Main header있고 그 다음으로 tile part들이 여러개가 나온다. tile part는 각각 tile part header와 packet들로 구성되어 있다. 코드 ..

Background url 인코딩 - hex값 앞에 %를 붙힌 값. (url에 포함되는 문자들을 안전하게 웹서버에 전달하기 위해, 특수한 기능을 가진 문자들을 브라우저가 인코딩해서 전달) 블라인드 SQL injection : 정보를 직접적으로 알아낼 수는 없지만 true/false를 통해 DB의 구조를 알아내는 공격 기법. information_schema.tables Exploit 100점 짜리 문제..! sql injection 문제로 보인다. 1을 입력하고 제출을 누르면 이렇게 데이터베이스 형식으로? result column에 값이 저장된다. 다른 값을 넣으면 추가되나 확인해보려고 2를 입력해서 제출해보니 0이 떴다. 3도 마찬가지. 그런데 0을 뜨면 아예 result가 뜨지 않는 것을 볼 수 있다..

소스를 확인해보면 다음과 같다. php에서 extract() 함수는 배열 속의 키 값을 변수화 시키는 함수다. REMOTE_ADDR의 값에서 ..은 .으로 12, 7. 0. 은 없는 값으로 변경시킨다. 그러면 127.0.0.1 은 1만 남게 된다. 127.0.0.1이 나오려면 17.2712..0...0...1 을 넣으면 된다. 우선 $REMOTE_ADDR 에 값을 넣어야하기 때문에 쿠키에 REMOTE_ADDR를 만들어서 값을 넣자. 안된다. 다시 생각해보니 12가 없어지면 7. 이 되서 다시 없어지게 된다. 그리고 0.에서 0 없어지는 걸 고려안했다 ㅎ;; 수정해서 112277...00...00...1를 넣으면 된다.

SQL 인젝션 문제라고 한다. 소스를 보면 다음과 같다. id를 admin으로 들어가면 되는 것 같다. select문을 보면 일단 Id가 guest로 세팅되어있어서 no 에서 or를 넣어서 앞에 부분을 무시하고 admin으로 바꾸면 될 것 같다. preg_match에서 공백 / ( ) | & select from 0x/i 등을 확인하기 때문에 뛰어쓰기를 할 수 없어서 url 코드로 입력했다. url 코드에서 탭은 %09이다. 따라서 url에 ?%no=-1%09or%09no=2 를 입력하면 된다.

입력 칸이 하나 나온다. 소스를 보면 버튼을 누르면 sub()함수가 실행이된다. sub함수를 보면 입력한 값이 unlock 연산의 값과 같으면 된다. 직접 하기 귀찮으니까 코드를 실행시켜보자. 7809497을 입력해보자. 안된다... 소수점이 문젠가 싶어서 float으로 했는데 딱 떨어진다. 그래서 그냥 크롬 콘솔에다가 했는데 다른 값이 나온다. 나누기 처리가 다른가 싶기도.. 아마 여기서는 1/10하면 c에서는 둘다 정수여서 0으로 반환하는데 여기서는 0.1로 나오고 이런 차이인것 같다. 그래서 7809297.1 입력하면 끝!

다음과 같은 화면이 뜬다. 소스를 확인해보자. star는 가장 처음에 나오는 별이고 그 다음에 보이는 aa는 두번째 노란 별이다. kk함수를 확인해보자. - Math.floor() : 해당 숫자가 같거나 작은 수 중에 가장 큰 정수 반환 - Math.random() : 0이상 1미만의 구간에서 난수를 반환 따라서 rndc에 나올 수 있는 값은 900000 -1 = 899999 이다. 이렇게 되면 font color가 #899999 인데 이 색깔은 다음과 같다. (1,1) 위치에 해당 컬러의 *이 나타난다. event.keyCode는 키의 입력을 아스키코드를 기반하여 감지하고 함수를 처리할 수 있다. 키가 입력이 되면 해당 키 입력 값이 cd이며 mv함수가 실행된다. mv 함수를 확인해보자. 각 키 값에 ..