일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문제풀이
- 블록체인
- 자료구조
- kangsecu
- 시스템
- nefus
- xcz
- 코드게이트
- 정보보호
- hacking
- 포너블
- DVP
- Pwnable
- webhacking.kr
- 웹해킹
- CTF
- 네퓨즈
- webhacking
- 버그헌팅
- 보안
- 버그바운티
- 해킹
- 정보보안
- WarGame
- 프로그래밍
- 선린인터넷고등학교
- 포렌식
- wargame.kr
- C언어
- 워게임
- Today
- Total
목록해킹 (41)
kangsecu's B1og
이번에는 libc가 같이 제공이 안될경우 libc를 찾아서 문제를 해결하는 방법에 대하여 알아보자. libc-database 다운 : $git clone https://github.com/niklasb/libc-database.git libc data 다운 : library download / pwd : libc-database > $./get 사용법 : 1. 함수로 libc 파일 찾기 : ./libc-database/find/ [함수이름] [함수주소] 2. 함수 offset 찾기 : ./libc-databse/dump [id] [함수 이름] 3. ./libc-database/find/ [함수이름] [offset 3 bytes] function_addr = libc-base_addr + offset인데 ..
One_gadget이란 하나의 가젯만을 이용해서 쉘을 딸 수 있는 가젯이다.got overwrite를 할 경우 많이 사용되며 /bin/sh을 립시 파일 내에서 실행하는 가젯이다. one_gadget install : > apt install ruby > gem install one_gadget 사용법 : one_gadget "libc file" ex) one_gadget /lib/x86_64-linux-gnu/libc.so.6
이번에는 조금 팁? 같은 거다. 뭐 plt나 got를 주소를 알 수 있지만, 우리가 보는 여러 가지 함수들의 이름도 메모리 내에 적재되어 있기 때문에 이를 이용해서 공격을 진행하는 것이다. 그중 .dynstr 섹션의 함수들의 네이밍을 보면 여러 가지 문자열로 이용할만한 것들이 있다. 예를 들어서 가장 많이 사용하는 것은 /bin/sh 같은 걸 사용할 수 없을 때 fflush함수 등에서 sh를 가져다 사용하는 것이다. 이걸 system인자로 넘겨서 sh을 사용할 수 있게 된다.
드디어 rop를 정리한다. 공부해가면서 계속해서 내용을 추가할 예정이다. 이전 내용 복습 - 간단하게 RTL Chaining을 훑고 가보자. RTL Chaining은 RTL을 pop ret을 이용해서 여러 함수의 호출을 연계하는 것이다. 예를들어 read함수를 이용하여 bss영역에 /bin/sh을 입력하고 이를 system함수의 인자로 넘겨주기 위해서는 dummy + sfp + read@plt + pop pop pop ret Gadget + 0x0 + &bss + 0x8 + system@plt + pop ret Gadget + &bss 이렇게 페이로드를 구성하고 read는 0일때 표준입력이니까 이를 이용해서 bss에 /bin/sh을 넘겨주면 된다. - bss영역을 조회할때는 아이다로 보거나 readelf..
1. bof_pie binary : main은 볼게 없다. 들어가자마자 welcome이 실행됨 welcome : j0n9hyun : 대충 페이로드가 생각이났다. 근데 PIE가 걸려있어서 base주소로 할 수가없다. 그러므로 welcome_addr에서 welcome_offset을 빼서 base_addr을 구하고 거기에 j0n9hynun_offset을 더해서 j0n9hyun을 실행시킬 것이다. exploit : 2. yes or no binary : 3. RTL_world binary : NX가 있으니가,, RTL 을 하자 > 그냥 문제 이름도 RTL이다. main : 이 부분에서 bof가 발생하고 우린 여기서 rtl을 해주면 된다. exploit : 바이너리를 확인해서 dummy(144) + sys_add..
1. Basic_BOF #1 binary : main : 뭐 굳이 쉘코드를 넣을 필요도 없다. 그냥 v5변수 값이 -559038737이면 되는데 이게 0xDEADBEEF이다. payload : 2. Basic_BOF #2 binary : main : 이번에도 딱히 뭐 없다. 그냥 v5변수에 sup함수를 넣는다. 그럼 여기서 128바이트를 더미로 채우고 0804849b를 ret로 넘겨주면 된다. payload : dummy(128) + p32(0x0804849b) $(python -c 'print "A"*128 + "\x9b\x84\x04\x08"'; cat) | nc ctf.j0n9hyun.xyz 3001 3. Basic_FSB binary : main : vuln : 이 함수의 snprintf와 밑에 ..
입시가 끝난 기념으로 오랜만에 최근근황을 작성합니다. 2019년 한 해는 거의 입시와 업무에만 집중을 해서 활동이 뜸했습니다. 1. 코드게이트 본선 코드게이트 본선에 진출하여 대회를 치르고 왔습니다. 예선에서 웹이 터져버려서 당황했는데 운이 좋게 갔네요.. 본선에선 포너블 하나밖에 못풀었습니다. 2. DVP DVP라는 탈중앙화 보안 플랫폼에서 간단한 업무를 맡게되었습니다. 3. 시원 포럼 Intel SGX 발표 부산에서 진행된 시원포럼 세미나에서 Intel SGX를 주제로 발표하였습니다. 태어나서 처음간 부산여행인데 또 처음으로 같이 간 친구 덕분에 보호자 신분으로 응급실을 가봤습니다. 과음하지 맙시다 ^_^ 4. DSEC 주니어 해킹 챔피언쉽 장려상 수상 대구에서 진행된 주니어 해킹 챔피언쉽에서 장려상..