CTF
-
[CSAW 2015]Reversing 500CTF 2015. 10. 6. 06:09
파일을 다운받고 실행을시키면 백그라운드로 돌면서 jpg파일을 로드시킨다.처음에 500점인거보고 후덜덜하고 포기하려했는데 백그라운드로 프로세스돌길래 이거 삭제하려고 분석을 해봤다. 절대 풀려는의도는없었지만... 근데 lola.jpg를 로드하는 함수가있길래 그 함수에 브레이크포인트를 걸고 하나하나 실행시켜보았다. 브레이크 포인트를 걸고 쭉 실행시켰는데 연산하고 lola.FLAG라는 오프셋을 푸쉬시킨다.근데 그 영역엔 플래그가존재했다. 절대 풀려는의도가없었는데 풀려버려서 놀랬고.. 생각해보니 작업관리자에서 프로세스만 꺼주면 되는거였다...잠깐의 멍청함으로 풀어버렸는데 그래도 기분은 좋다
-
-
-
Layer7 CTF IhaveLongDariYouHaveShotDariCTF 2015. 9. 9. 03:43
이 문제는 재미있었다. 바이너리를 보면 우선 패스워드를 입력받는데 패스워드는 그냥 대놓고 주니 패스, 근데 우리가 오버플로우 날것은 딱봐도 read에서 100퍼센트 터진다. 그러면 우리는 그 read로 접근해야하는데, 그전에 scanf에서 입력받는데 그게 _int16이였다. int16은 short형으로, 최대크기를 벗어나려면 65536을 대입하면된다.그니까 그냥 대입해주니 입력할수있는 공간이 뙇! v7은 312만큼의 크기이다. 근데 출제자가 정말 착한게, /bin/sh, exit , system 주소등 모든 주를 제공한다. .data 영역에 대놓고 /bin/sh를 주게되고, 각각의 plt를 구하면된다. 페이로드를 짰다. from socket import *import time,struct p = lamb..
-
Pico CTF Rop1CTF 2015. 9. 9. 02:37
#include #include #include void be_nice_to_people(){ gid_t gid = getegid(); setresgid(gid, gid, gid); } void vuln(char *name){ char buf[64]; strcpy(buf, name); } int main(int argc, char **argv){ be_nice_to_people(); if(argc > 1) vuln(argv[1]); return 0; } 소스는이렇다 그냥 기본적인 ROP이다.예전에 이걸 왜 못풀었지 ㅠㅠ 그냥 STRCPY@PLT 다 구해서 공격하면될것같다. .bss = \x28\xa0\x04\x08 ppr = \x4e\x85\x04\x08 system = \x90\x51\x5d\x55 e..
-
-
-