y0u_bat
링크드리스트 Linklist(추가,수정,삭제,검색,출력) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158..
[CodeGate2015] BookStore 풀이 보호기법이 모두 걸려있다. 구조체 모양은 이렇게 생겼다. 처음에 famous_saying.txt 파일을 읽어온다.그다음 아이디와 패스워드를 검사한다. 이 함수 내부를 보면 파일을 읽어와서 printf로 출력해준다. 아이다를 뒤지다 보면 함수포인터를 2개 쓰고 있는걸 볼수있다. 이 함수 포인터를 파일을 읽는 함수로 덮고 쓰면 될거같다고 생각했다. 그런데 PIE환경이라 함수의 주소가 랜덤이다. 그래서 함수의 주소를 leak한다음 함수의 베이스주소를 구한다음 베이스주소 + file_read 함수의 오프셋 = file_read함수 이런식으로 구해줘야 된다. view를 보면 shipping이 1일때 func2함수포인터가 인자로 bookname 쓰고 함수를 호출한다..
[Plaid CTF 2014] pork 풀이! 저 함수를 보면 pork라는 계정이 있는지 확인한다. 그러므로 pork라는 계정을 추가 시켜줘야 된다. 그리고 sscanf로 입력한다. clienterror부분을 보면 저기 sprintf에서 buffer overflow가 일어난다. s 는 ebp-458이므로 sfp전까지가 0x458 = 1112바이트이다. 그런데 여기서 우리가 s에 입력하기전에 위 sprintf로 먼저 s에 내용을 채워주고 있다. 그러므로 우리가 입력하기전에 입력된것을 빼기위해 len해서 보면 92가 나오는걸 볼수있다. 전에 입력한걸 빼보면 1112 - 92 = 1020 즉 버퍼는 1020다. buffer 1020 | sfp 4 | ret 4 처음에는 그냥 nx가 안걸려있길래 read로 쉘코..