오늘은..조금 쉬엄쉬엄했다...
/home/shellbasic/flage_name_is_loooooong경로가 저장되어있는 곳 찾기
main+51 mmap@plt함수실행
main+64 init call
main+75 banned_execve
main+95 printf@plt호출
main+117 read@plt호출 qword ptr [rbp - 0x10] 에 저장한다.
x/s 0x7ffff7e82a37에 "H=
main+139 call rdx ; //<0x7ffff7ffa000>
0x7ffff7ffa000 에서 push 0x6a 뒤 or and and ...연산시작. or연산에서 막힌것을 보니 여기까지인듯
0x7ffff7ffa000에 입력값 저장.
main+139에서 si로 내부 들어가니 새로운 코드. rdx에 저장된 함수 내부 로직인듯
0x7ffff7ffa000 cmp rax, 0x6b73617b
0x7ffff7ffa006 jge 0x7ffff7ffa012 <0x7ffff7ffa012>
↓
0x7ffff7ffa012 add byte ptr [rax], al
H={ask} 입력값 기준 우선 jge를 통과, 다만 바로 다음줄에서 막힘
H={hello} 새로운 내부로직
0x7ffff7ffa000 cmp rax, 0x6c65687b
0x7ffff7ffa006 insb byte ptr [rdi], dx
0x7ffff7ffa007 outsd dx, dword ptr [rsi]
0x7ffff7ffa008 jge 0x7ffff7ffa014 <0x7ffff7ffa014>
↓
0x7ffff7ffa014 add byte ptr [rax], al
결국 풀진 못했지만 경로명을 아스키코드형식으로 나누어 stack에 넣어야 하는 것과 만들어진 코드를 셸코드로 만들어서 입력해야한다는 정도?
그래서 문제는 짬짬히 도전해보기로 하고 웹해킹 트랙을 들어갔다.
기본적인 HTTP프로토콜에 대한 이해를 공부하고 있다.