휴... 가면 갈수록 보호하는 종류가 많아지네요.이번엔 상황의 심각성(?)을 깨닫기 위해 소스코드를 한 번 보도록 하죠.보시면 이제 argv[1]까지만 사용가능하며, 그나마 memset으로 argv[1]를 초기화시켜버리네요...하지만 ! argv[0] 필터링이 없어져서 argv[0]를 이용해야 한다는 감이 딱! 왔습니다.그래서 전과 같이 '링크'를 이용해서 풀려고 했으나...계속 오류가 발생하여 찾아보니, '링크'는 '\x2f'(/)가 들어가면 원래 존재하는 디렉토리가 아닌 이상 링크를 안시킨다고 합니다.생각해보면 당연한거죠. 디렉토리가 없는데 그걸 생성하고 그 밑에 또 파일을 생성한다는 것이요.생각을해보다가 그냥 mkdir -p 명령으로 부모디렉토리를 생성하면서 그 밑에 '링크'를 걸고 Exploit을..
너무 길어져서 더 이상의 소스코드를 올리기는 좀 힘들 것 같네요.앞으로는 추가되는 부분이나 새로운 부분만 올리겠습니다.프로그램을 실행할 때 길이가 77글자가 안되면 종료되네요...이 부분은 리눅스의 '링크'를 이용하면 우회할 수 있습니다. 오히려 그 전 문제들에서 추가되는 트릭보다 더 쉬웠던 것 같기도 합니다.일단 orge.c 를 org1.c로 복사한 후에 소스코드에 dumpcode.h를 추가시키고 argv[2]를 이용해서 풀겠습니다.org1.c 에 아래와 같이 추가해주세요.(buffer가 아니라 argv[2]를 보겠습니다.)지금까지와 구조는 똑같으니 RET가 어디있는지는 아실겁니다.그리고나서 프로그램의 길이는 gcc를 이용해서 조작해줍시다.(전 orgeorge... 해서 77자로 만들었어요.)강조하면 ..
문제 6번에는 조건이 하나 더 붙었네요.이번에는 바로 복사해서 dumpcode.h 를 추가하고 밑에 dumpcode(~)를 추가해주세요.여러분들이 어떻게 생각하실지는 모르겠지만 전 아래와 같이 생각했습니다. 1. 기존의 조건이 있으니 환경변수와 버퍼는 제외.2. argv[1]의 길이를 제한.- argv[1]를 이용하지 말자.- 어차피 argv의 값들은 **(이중 포인터)이니 어딘가에 저장이 스택 높은 주소 어딘가에 존재한다.(위의 부분은 프로그램을 자세히 분석 안해보셨다면 처음 아시는 분들도 있을 겁니다.) 그래서 ! 결론적으로 dumpcode(buffer, 1000)으로 스택의 끝까지 살펴보았습니다.사진이 크지만 제가 네모 친 부분만 보세요. argv는 주소를 두 번 참조하기 때문에 결국에는 맨 아래에..
- Total
- Today
- Yesterday
- compliance
- platform
- defaulttheme
- security
- CIS
- REACT
- 4xx
- JavaScript
- opensource
- stateType
- scp
- terraform
- temlate
- cloudsecurity
- steampipe
- conftest policy
- IAM
- teplate
- ViaAWSService
- aws
- fleet manager
- .get()
- findinglatestversion
- 계정정보저장
- 2xx
- web
- Cloud
- 우주와컴퓨터
- ControlTower
- AWS #CIS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |