본문 바로가기

분류 전체보기

(38)
어셈블리어로 사칙연산하기 하하 어셈블리어는 정말 깐깐한 언어인것 같다. 연산 방식도 하나하나 지정해줘야 하고 변수 정의할 때 레지스터 위치도 하나하나 지정해줘야 하는등 정말 태초적인 언어인것 같다. 파이썬은 밀키트 하는 느낌이라면 이건 재료를 하나하나 마트에서 사서 차근차근 조리 순서에 맞춰 조리하는 내가 직접 손수 만드는 가내수공업 같달까...? 그래서 어쨌든 오늘 어셈블리어로 사칙연산하는 코드를 게시할 것이다. 일단 사칙연산을 하기 전에 변수를 지정하고 변수 값을 출력하는 코드를 써보자. %include "io64.inc" section .data section .bss a resw 1 section .text global CMAIN CMAIN: GET_DEC 2, [a] NEWLINE PRINT_DEC 2,[a] xor r..
칼리리눅스 포트 열기 port란? 네트워크 연결이 시작하고 끝나는 허상의 지점을 port라고 한다. (영어여서 약간의 의역.....이 들어가있다. 필자는 영어를 못한다.) 자세한 설명은 사이트에서 확인하는게 빠를지로 모른다. https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-computer-port/ What is a computer port? | Ports in networking Ports are virtual places within an operating system where network connections start and end. Learn how network ports work and the most-used port numbers. ww..
소수 출력하는 코드 정말 랜만에 c언어 코드 게시물을 올린다. 지금 올리는 이유는 조회수가 잘나오고 이 글을 쓰는 지금 잠이 안오고 기본에 충실해질 필요도 있다는것을 느꼈기 때문이다!! 하하하하 코드를 먼저 보도록 하자. #include int main() { int a=0; for(int n=2; n
어셈블리어 문법 ※이 글은 철저히 INTEL cpu에서 사용하는 어셈블리어를 기준으로 서술한 글입니다!! 원래는 처음에 문법을 서술하는게 맞지만, 이건 너무 어려워서 코드를 보고봐야 이해할 수 있을것 같다. (물론 이거 내 기준) 코드 한줄을 보고 시작하자. mov rax, 1 어셈블리어는 코드를 opcode operand1, operand2로 서술할 수 있다. 여기서 opcode는 연산자를 의미하고(더하기 빼기 나누기 곱하기) operand는 연산을 당하는 피연산자를 의미한다. (3+5에서 '+'가 연산자/ '3', '5'가 피연산자) 그러니까 여기서 opcode는 mov이고 operand는 rax와 1이 된다. rax는 후문에 서술할 레지스터 중 1개이다. 여기까지는 INTEL이나 AT&T 둘다 똑같다.(아마..?)..
칼리리눅스 어셈블리어 코드 작성 하하하 정말 오랜만에 게시하는 어셈블리어 게시물인것 같다. 요즘 어셈블리어 공부의 중요성을 뼈저리게 느끼고 있다. 그래서 다시 작성을 시작해보려한다!하하하 정말 웃긴걸? *지난 게시물과 다르게 변동된 사항이 있다! 역어셈블러: SASM->NASM 야호! 오늘은 개발환경이 바뀌고 처음으로 코드를 작성한 날이다. 하하하 먼저, 칼리리눅스에 nasm을 깔아주자 (만약 자신이 이미 슈퍼유저 권한이 있다면 굳이 sudo를 붙일 필요는 없다.) *sudo: super user do 그리고 편집기를 이용하여 확장자가 .s인 어셈블리어 파일을 만들어주도록 하자. 오늘은 사용방법을 알려주는거니까 예시로 helloworld.s를 간단히 작성하고 만들어보도록 하겠다. 이렇게 작성을 하고 저장후 나가면 helloworld를 ..
PHP 정규식 항상 문제를 풀다가 나의 발목을 잡았던 것이 php 정규식이었다. 정규식 해석 사이트에서 해석을 해봐도 내 맘에 들지 않았다. 오늘은 그 문제의 정규식을 공부하기 위해 이 글을 써보고자 한다. 먼저 정규식의 정의부터 알아보자. 모든 공부에선 정의가 제일 중요하다. 정규식: 특정한 규칙을 가진 문자열의 집합*을 표현하는 데 사용하는 형식 언어(위키백과) * 집합: 명확한 기준에 의하여 주어진 서로 다른 대상들이 모여 이루는 새로운 대상 이렇게만 보면 진짜 무슨소리인지 모르겠다. 뭔 말을 이렇게 어렵게 하는거야 예시를 통해 이해해 보도록 하자. [1-3][a-f]{5} webhacking.kr 이 식을 해석해보면 1~3의 숫자1개와 a~f의 문자 5개로 이뤄진 문자들을 나타내는 식이다. 이 식으로 나타낼 수..
11단계(old) 드디어 30점 문제를 포스팅하게 되었다. 빠르게 페이지부터 보도록 하자. 갑자기 wrong이 뜬다. 하하하하 진짜 이렇게 아무것도 없을 수 있을지... 그래도 소스를 볼 수 있으니 링크를 타고 들어가서 소스를 보도록하자. view-source 우리는 전체를 볼 필요는 없고 필요한 부분을 보도록하자. 다른부분은 싹다 빼고 중요한 php코드를 보면 변수 pat부분을 보면 pat는 '정규식부분_+(0개 이상의 문자열)+자신의 ip+(0개 이상의 문자열)+ p a s s'이다. 정규식 부분을 자세히 보도록 하자. 1~3의 문자중 1개와 a~f까지 문자 중 5개를 입력하는것인데 ex) '1abcdf'-TRUE, '1abcd'-FALSE가 되는것이다. _문자열을 입력하고 '*'는 0개이상의 문자열을 입력하라는 것이..
10번 문제풀이 이게 뭐지 싶었던 문제중 하나. 문제 푸는 방법이 2가지가 있다. 먼저 F12를 눌러 코드부터 보면 이런식으로 나오는데 여기서 가장 중요한부분은 a태그에 있는 코드이므로 나머지는 무시해버리자. 한번 클릭할 때 마다 1px씩 이동하는데 만약 px의 값이 1600이 되면 링크이름+go='1600this.style.left'로 이동하면서 문제가 풀리는 그런 문제였다고 생각했다. 그래서 링크 뒷부분에 ?go=1600this.style.left를 붙여봤는데(이러면 당연히 풀릴줄) no hack이 나오면서 풀리지 않았다. 너무 슬픈걸...? 내가 문제를 풀면서 발견한 방법은 2가지가 있다. 1. 일일이 클릭하기 px수가 1600에 도달할때까지 계속 누르는 방법이다. 정말 찐노가다 난 이거 시도하다가 포기했다. 16..
17번 (old)문제풀이 문제 풀다가 생각보다 허무하게 끝나서 다른 문제들보다 먼저 올려본다 이 문제는 정말 코드를 모르는 생초보가 봐도 풀수있는 문제라고 장담할 수 있다. 클릭후 첫화면을 보면 검은 바탕에 입력박스와 체크박스밖에 없다. 위의 사진처럼 아무거나 쳐봤는데 Wrong이라는 말과 함께 경고창이 뜬다. F12를 눌러 코드를 보니까 숫자가 이렇게나 많았다. 너무 많아서 혼절할뻔;; 사실 숫자공포증 있음 대충보면 이게 뭔 소리인가 싶겠지만 알고보면 굉장히 쉬운 코드인것을 알 수 있다. 코드 구성 언어는 html, javascript이다. 그런데 우리가 볼부분은 javascript이므로 로 구분되어 있는 부분을 제외하고는 무시하도록 하자. 구문을 해석해보자면 unlock의 값이 저렇게 긴 숫자들의 값이고 만약 login.pw..
1번 문제풀이(old) 정말 오랜만이다. 간만에 글을 쓰려니 잘 안써지는것 같다. 그래도 최대한 열심히 써보도록 하겠다. *이 블로그는 공부목적으로 쓰는 글이며 틀린것이 있다면 둥그런 지적 부탁드린다. 먼저 문제풀이를 위해 level1을 들어가보면 아래 사진과 같은 화면을 볼 수 있다. 여기에서 view-source를 눌러서 링크를 타고 들어가보면 이러한 코드를 볼 수 있을것이다. 이 코드를 해석을 해보자면(내 해석이 정확하지 않을 수 있다) 쿠키(user_lv)의 값이 3보다 크면(초과) solve 즉 문제가 풀리게 되고 쿠키(user_lv)값이 4이상이면 쿠키의 값이 1로 반환되며, 이 과정을 모두 마치면 쿠키값이 3과 4사이에 있을때 'level:자신이 입력한 값'으로 뜨고 만약 다른수를 입력했다면 'level:1'로 출..