목록분류 전체보기 (289)
촉촉한초코칩
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Xnn2e/btsGdZ72gUd/ILi6ZBycULKSJhCrYMIbBk/img.png)
rao.c와 rao.py 파일이 있다. rao.c의 코드를 보며 취약점을 찾는다. // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0; } main 함수에서 s..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m90iG/btsF2M1eBF3/KhNoB7MkMTDJ1huCMRKAW1/img.png)
명령어 Bomb.c 6가지 phase 함수 존재 read_line(), phase(), phase_defused()가 반복됨 read_line() : 사용자 입력값을 받는다. phase() : 입력값 검증 phase_defused() : phase()를 무사히 통과하면 폭탄이 해체된다. break문 해제하는 방법 info break delete 번호 함수 들어가기 step into, si 함수에 들어가서 다음 명령어 실행하기 ni examine (명령어 : x) : 가상 메모리에 존재하는 임의 주소의 값 확인하기 o (octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bKmW5r/btsF3DWXY8F/RduISohTgPOKAaEh5BetXk/img.png)
Attn-Agents Dwwhqwlrq MFWI djhqwv! Dq xqnqrzq DSW lv klmdfnlqj qhwzrunv wr vsuhdg vwhdowk pdozduh xvlqj vwrohq vrxufh frgh. Brxu plvvlrq: wudfn grzq wkh vrxufh ri wkh ohdnv dqg vwrs wkh zlgh-vsuhdg dwwdfnv dfurvv rxu qhwzrunv. Wlph lv uxqqlqj rxw. Wkh {idwh-ri-wkh-zhe} lv lq brxu kdqgv! 알파벳이 다양하게 나와있어서 처음에는 빈도분석 암호인줄 알았다. 그런데 빈도분석으로 복호화하는게 어려워서 고전암호에 대해 더 알아보다가 카이사르 암호를 알게 되었다. https://jo-gunhee..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/n6Ovy/btsFPspq8HW/2yUmgAzk5lYOLCHdwuUhsK/img.png)
Quiz: x86 Assembly 2 mov dl, BYTE PTR[rsi+rcx] rsi + rcx = 0x400000 BYTE PTR[rsi+rcx] : rsi+rcx가 가리키는 주소에서 데이터를 1바이트 만큼 참조 dl = 0x67 xor dl, 0x30 dl = 0x57 mov BYTE PTR[rsi+rcx], dl rsi+rcx = 0x400000 BYTE PTR[rsi+rcx] = 0x67 0x67에 dl을 넣는다는 뜻이므로 0x67값은 0x57이 된다. inc rcx rcx = 1 cmp rcx, 0x19 rcx의 값인 1과 0x19를 비교한다. rcx 값이 0x19보다 크면 다음 줄을 실행하고, 크지 않으면 다시 처음으로 돌아간다. (jmp 1) 16진수인 19를 10진수로 변환하면 25이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Albqr/btsFRlCOSrl/qGkOcGG29T5OULSwOUOoPK/img.png)
ISA (Instruction Set Architecture, 명령어 집합 구조) CPU가 처리할 수 있는 명령어 집합 CPU를 만들 때 특정 ISA를 기반으로 제작한다. ISA x86-64 아키텍서 레지스터 - 크기 : 8바이트 (64비트) 1) 범용 레지스터 이름 주용도 rax (accumulator register) 함수 반환 값 rbx (base register) x64에서는 주된 용도 없음 rcx (counter register) 반복문의 반복 횟수, 각종 연산의 시행 횟수 rdx (data register) x64에서는 주된 용도 없음 rsi (source index) 데이터를 옮길 때 원본을 가리키는 포인터 rdi (destination index) 데이터를 옮길 때 목적지를 가리키는 포인터..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cXTet8/btsFOEDQq3p/lKcNvMRNFRV9emIPSDfhp1/img.png)
Web: The Gauntlet 사이트 들어가보았다. hidden 하고 값이 있어서 flag로 제출했는데 실패함 디코 보니까 Burp Suite 사용해라 어쩌구 저쩌구 있는 것 같은데 모르겠다 hidden은 바로 있는데 flag는 아님.. https://medium.com/@realm3ter/wolvctf-web-the-gauntlet-write-up-b6526513cec8 참고하기 간단한게아니였음...ㅋㅋ Rev: babyre 문제 파일을 다운 받았는데 파일 확장명이 나오지 않아서 IDA로 열었다. 둘러보다가 flag 형식의 문자열 발견.. Crypto: yORs Truly 아마도 이게 암호화문..?? xor연산은 키가 없으면 정상적으로 동작하지 않는다. 그래서 ciphertext_b64를 출력하면 빈..