x32 Format String Bug 문제이다.
# 보호기법 확인
# code
val의 값이 24이면 flag를 출력해준다.
그리고 printf(&buf); 로 서식지정자를 사용하지 않고 buf 값을 바로 출력해서 Format String Bug 취약점이 있다. 그리고 그 전에 val 주소도 출력해준다.
출력해주는 val 주소를 받아서 read 시 FSB를 사용하면 printf(&buf) 시 val 주소가 위치한 곳을 알 수 있고, 이 위치에 값을 24로 주면 될 것이다.
# process
6번째에 출력된다.
따라서 처음에는 p32(val)로 val 주소를 주면 6번째에 출력이 되는데, 처음 주는 주소 길이는 4바이트이다.
6번째 %n에 들어가는 값이 24가 되게 해야하므로 20바이트를 그 사이 5개에 주면 된다.
따라서 %x하나 당 4바이트이므로 5*4 = 20바이트로 %20x를 준다.
그리고 24가 들어갈 자리 6번째는 %6$n을 사용한다.
6$는 6번째 포맷 문자에 대응 시킨다는 의미.
# exploit code
# exploit
[picoCTF 2018] can you gets me (0) | 2020.01.31 |
---|---|
[picoCTF 2018] echooo (0) | 2020.01.29 |
[Def Camp 2016] Warm Heap (0) | 2020.01.22 |
[HITCON-Training] lab14 : magicheap (0) | 2020.01.12 |
[Insomni'hack 2017] Wheel of Robots (0) | 2020.01.10 |