-
PE 구조 (8) - 계산기의 PE 구조 / Import Directory (INT와 IAT 찾기)Knowledge/Reversing 2020. 3. 29. 03:10
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory 오늘 확인할 calc.exe의 ENTRY_IMPORT 이다. 이것은 어떤 것으로 구성되어 있을까? 우선 IMAGE_IMPORT_DESCRIPTOR 구조체를 보면 된다. IMAGE_IMPRT_DESCRIPTOR typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; // 0 for terminating null import descriptor DWORD OriginalFirstThunk; // INT (Import Name Table)' RVA } DUMMYUNIONNAME; DWORD TimeDateStamp; // 0 if ..
-
LOS 20 - dragon Write Up (sql문 개행하기)CTF/Web 2020. 3. 27. 20:00
이건 뭐 대놓고 미리 주석처리를 해서 우리에게 절망을 주려는 쿼리문이다. 우리가 pw에 어떠한 값을 주더라도 이미 주석처리 되서 동작하지 않을 것이다. 이럴때는 우리가 개행을 해주면 어떨까? 공백우회에서 쓴 %0a는 사실 개행의 역할을 한다. 즉 개행이 없이 우리가 값을 넣어주면 select id from prob_dragon where id='guest'# and pw='입력값' 이되지만 %0a를 통해서 개행을 시켜주면 select id from prob_dragon where id='guset'# and pw='%0a
-
LOS 18 -nightmare Write up (sql injection ;%00주석 활용)CTF/Web 2020. 3. 26. 18:59
나에게 악몽같았던 문제이다. 글자수 제안을 걸어버렸다. 하필이면 pw가 ''가 아닌 ('')여서 더 골치아파 졌다. 일단 주석을 해야하는데 #을 막아놔서 2글자 주석만 된다. 우리는 샾 말고도 ;%00이라는 주석을 활용해야한다. 이렇게 쿼리를 만들어주고 남은 글자는 단 두글자 처음엔 or을 써야하나 해서 굉장히 머리가 아팠었다. 고심끝에 pw 자체 값과 무언가를 비교해서 참을 만들어주면 어떨까? 라는 생각이 들었다. 1과 0을 이용해보기로 했다. =0 혹은
-
LOS 17 - zombie_assassin Write UpCTF/Web 2020. 3. 25. 18:25
strrev(addslashes($_GET['id'])); strrev(addslashes($_GET['pw'])); strrev와 addslashes가 적용되어 있다. 임의의 값을 넣어보면 그 의미를 알 수 있다. strrev로 인하여 입력한 값이 거꾸로 들어간다. ?id=abcd를 입력해보았다. 이것을 이용해서 addslashes 함수를 우회할 수 있는 기회가 된다. \와 '를 잘 활용해야한다. 원래라면 addslashes로 인하여 ' 가 \'로 바뀌는데 이것이 리버스 되면서 '\로 바뀌게 된다. 이런 원리를 이용해서 더블 쿼터를 사용해서 \를 한개 추가함으로써 id의 마지막 싱글 쿼터를 문자처리 시켜주었다. 굉장히 알쏭달쏭하게 풀게 만든 문제였다.
-
LOS - 16 Succubus Write Up [ '(싱글쿼터) 필터링 우회, \(역슬래쉬) 활용 방법]CTF/Web 2020. 3. 24. 16:58
sql injection의 생명과도 같은 '(싱글쿼터)가 필터링 되어 있다. 이런 경우에는 id 파라미터에서 먼저 작업을 해주어야 한다. 그건은 바로 escape문자인 '\' 역슬러시를 사용하는 것이다. '\'를 사용하면 역슬러시 다음에 오는 문자가 문자형으로 쓰이는 특수문자라는 것을 알려준다. 이러한 특징을 이용하여 기존에 적혀있는 싱글 쿼터를 살려서 풀어햐 하는 문제이다. 자세한 설명으로 보자면 빨간색 네모를 '(싱글쿼터)로 감싸고 있는 구조가 된다. id='빨간 네모' '(싱글 쿼터 하나가 남는다.) 이렇게 된 이유는 id 입력값을 닫아주는 싱글쿼터를 이스케이프 문자를 이용하여 텍스트 문자로 변환되어 제기능을 상실한 것이다. 그래서 pw의 입력값을 여는 싱글쿼터가 본의아니게 id의 값을 닫는 싱글쿼..
-
LOS 15 - assassin Write up (sql injection like 활용)CTF/Web 2020. 3. 23. 18:39
admin의 pw를 가져와야하는 문제이다. 우선 like가 어떤 녀석인지부터 알아야한다. like는 뒤에 오는 ''안에 들어가는 녀석과 같은 것을 가져오는 문법이다. 가령 현재 예로 보면 admin의 pw가 pass라면 where pw like 'pass' 라는 문법에서 like 뒤에 pass와 어드민의 pw에 있는 pass가 일치하기에 참이되는 형식이다. 그런데 여기서 중요한 점은 like는 와일드마스크가 존재 한다. 바로 '%'와 '_'다. '_'는 한개의 글자에 해당하며 '%'는 0~다수의 글자가 해당한다. 우리가 보통 쓰는 와일드마스크 '*'와 '?'와 유사하기에 원리는 넘어가겠다. 아무튼 그리하여 like '%'를 해보았다. guest가 잡혔다. 그 이유는 '%'만 집어넣으면 모든 경우에서 참이..
-
LOS 13 - bugbear Write Up (blind sql injection)CTF/Web 2020. 3. 21. 03:27
필터링을 먼저 확인해보면 싱글쿼터, substr, ascii, =, or, and,' ', like, 0x 정말 많은 것들을 사용하지 못하게 되었다. 이럴 때 우리는 어떻게 해야할까? 사실 저번 단계에서 한 것과 큰 차이는 없다. import requests url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?" headers = {"cookie":"PHPSESSID=qdc234242342"} pw ='' for i in range(1,9): for c in range(22,133): query = "no=6||no%0ain%0a(2)%26%26mid(pw,{},1)%0ain%0a(%22{}%22)%23".form..