Shakti CTF 2022 - ropwork (hard)
Info
(9/387) solves
Hard
description
The fisherman is trying to untangle his fishing knots. If you could help him with it, it would be great!
Note:
The server is running on Ubuntu 20.04
The flag file found on the server is given a random name.
Author: d1g174l_f0rtr355
for player
1 | ropework_460328c6-afec-4492-9b9f-97a1f35c71af: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter ./ld-2.31.so, for GNU/Linux 3.2.0, BuildID[sha1]=8186a401dd45223b37552a01bd54666547a11437, not stripped |
Analysis
Mitigation
1 | Arch: amd64-64-little |
Source Code
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
대놓고 bof 터진다.
Vulnerability
fgets
함수에서 변수 사이즈보다 더 큰 값을 쓸 수 있어서 bof가 터진다.
Exploit
Exploit Scenario
bss + 0x20 에다가 /bin/sh 써주고 system 함수 인자로 이걸 줘서 실행시켰다.
Exploit Code
1 | from pwn import * |
tmi
처음에 csu 가젯으로 문제를 풀려고 했었는데 뭔가 잘 안되어서 다른 방법 생각해보다가 문제를 풀었다. 역시.. 롸업은 문제 풀고 바로바로 작성해야 생생하게 적을 수 있는 것 같다.. (다시 풀긴.. 좀..) 이제 롸업 안미루고 잘 적을 것이다..
아 그리고 이 씨텝에서 롸업으로 적은 세 문제 말고 easy 2문제와 meduim 한 문제가 있었다. easy는 너무 쉬워서 롸업 업로드를 안하려고 한다. (솔브가 거의 60~70이다.) medium은 못풀었는데 연결리스트 구현 관련된 문제이다. 연결리스트가 뭔지 까먹어서.. ctf 기간 때 연결리스트 공부했던 기억이 난다.
아무튼 이 씨텝에서 포너블이 총 6개였는데 한 문제 빼고 다 풀어서 기분이 굉장히 좋았다. 남은 연결리스트 관련 문제는 결국 롸업을 봤는데 heap에서 unsafe-unlink라는 기법을 사용하여 익스를 하는 문제이다. 개인적으로 heap 관련 문제는 내가 heap을 공부를 제대로 안했기 때문에 풀지 않는다.(?????) 평생 안할 계획은 아니고 내년으로 미뤄둬야지.