sub 문제입니다.
pwnable.xyz
pwnable.xyz
IDA로 디스어셈블 한 코드를 먼저 보시죠
설명을 덧붙이면..?
__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
int v4; // [rsp+0h] [rbp-18h]
int v5; // [rsp+4h] [rbp-14h]
unsigned __int64 v6; // [rsp+8h] [rbp-10h]
v6 = __readfsqword(0x28u);
sub_A3E(a1, a2, a3);
v4 = 0;
v5 = 0;
_printf_chk(1LL, "1337 input: ");
_isoc99_scanf("%u %u", &v4, &v5); // scanf 받기 때문에 이거일거라 생각했는데...
if ( v4 <= 4918 && v5 <= 4918 ) // 둘 다 4918을 넘기면 안됩니다.
{
if ( v4 - v5 == 4919 ) // 빼서 4919여야 합니다.
system("cat /flag");
}
else
{
puts("Sowwy");
}
return 0LL;
}
딱 저 세줄밖에 없어요...
%u가 부호없는 10진수라는데...
그냥 한번 넣어봤습니다.
..?
그냥 되네요..?
왜지?
하면서 제출도 해봤습니다.
ㅇㅁㅇ;;;
나왔습니다...
왜지?
왜지?
왜지?
scanf에서 자료형을 정해주는건 그렇게 받아야하기 때문인거 아니었나요?
찾아보니까... 어차피 두 변수는 정수형이라서 음수를 넣으면 음수로 표현이 된다고 하네요..?
흐으으음...
그냥 끝내기에는 뭔가 그러니까 어셈블리 코드나 보고 가겠습니다...
메인 함수의 주소를 찾았고?
이게 메인함수의 어셈블리입니다...
끄읕...
'Hacking-기초 > [PWN] Pwnable.xyz' 카테고리의 다른 글
[PWN] xor (50pts) (0) | 2020.08.01 |
---|---|
[PWN] note (50pts) (0) | 2020.07.30 |
[PWN] misalignment (50pts) (0) | 2020.07.28 |
[PWN] add (50pts) (0) | 2020.07.28 |
[PWN] Welcome (50pts) (0) | 2020.07.28 |