[CyberSpace CTF 2024 / pwnable] Byte Modification Service
CTF
Welcome to my Byte Modification Service, please modify the byte and leave your comments.AttachmentAnalysis스택의 임의의 위치에 저장된 값을 value로 가져와서 [1], value에서 1바이트를 임의의 값과 xor 하여 조작할 수 있다 [2]. 이렇게 조작된 값과 format string bug를 이용하여 [3] win()을 호출하면 플래그를 획득할 수 있다.ExploitationFirst failed attempt - GOT overwriteFSB 이후에 bye()에서 puts()와 exit()을 차례로 호출한다. 이 두 함수 중 하나의 GOT를 win()으로 덮어쓰면 될 것 같지만, puts()는 win() 내부에서 ..
[CyberSpace CTF 2024 / beginner] Baby Pybash
CTF
I made a very secure bash terminal in Python. I don't think anyone can break in!Shell script에서 $0은 현재 실행 중인 스크립트 파일의 경로를 의미한다.#!/bin/bashexport PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$PATH"cd /home/user || exitpython3 -u chall.py서버에서는 bash shell에서 chall.py를 실행하기 때문에, 서버에 접속해서 $0을 입력하면 일반적인 bash shell이 실행되고, jail을 탈출하여 자유롭게 명령어를 실행할 수 있다.
[pwnable.xyz] catalog
Wargame/pwnable.xyz
Another name saving app, so you don't forget it.AttachmentBugwrite_name()에서 c->length를 0x20으로 설정했다가 c->name을 입력받은 후에 다시 strlen(c->name)으로 설정한다. strlen()이 호출되는 시점에 c->name에 0x20바이트가 채워져 있다면 strlen()의 return value는 0x21이 되어 c->length에 0x21이 들어가게 된다.이후에 edit_name()에서 c->length만큼 입력을 받는데 ,c->length가 0x21인 경우 1바이트만큼 buffer overflow가 발생하여 c->length에 0xff 이하의 임의의 값을 넣을 수 있다.ExploitationBOF를 이용하여 c->fun..
[pwnable.xyz] PvP
Wargame/pwnable.xyz
iape v2AttachmentBugshort_append()에서 발생하는 buffer overflow를 이용하여 dest를 덮어쓸 수 있다.Exploitationdest가 0이 아니면 그 주소에 x를 복사한다. BOF를 이용하여 dest에 GOT의 주소를 넣고, GOT에 win()의 주소가 들어가도록 하면 플래그를 획득할 수 있다.ex.py
[pwnable.xyz] bookmark
Wargame/pwnable.xyz
Save your links hereAttachmentBugcreate_url()에서 입력한 bm에 : 또는 /가 계속해서 이어지면 ptr은 제한 없이 계속해서 증가한다.bm에 처음에는 9바이트만 입력할 수 있지만 뒤에 0x7f바이트를 이어붙일 수 있다. 이어붙인 문자열이 : 또는 /로만 이루어져 있을 경우, 다음에 create_url()이 한 번 더 호출되었을 때 그 뒤에 다시 0x7f바이트를 이어붙일 수 있게 된다. 이 과정을 반복하면 buffer overflow가 발생하여 logged_in을 덮어쓸 수 있다.Exploitationlogged_in을 0이 아닌 값으로 설정하면 플래그를 획득할 수 있다.ex.py
h0meb0dy_
'분류 전체보기' 카테고리의 글 목록 (7 Page)