[Load of SQL Injection] LOS - iron_golem(21단계)
WriteUP
21단계 = iron_golem 소스코드 해당 소스코드를 보면 이전문제와 다르게 추가적으로 적용된 필터링으로는 sleep, benchmark가 필터링되어 있다. 이는 Time based SQL Injection은 불가능하게 하기 위함으로 추측된다. 이번문제는 참값을 입력해도 참 거짓이 구분이 되지 않는다. 이럴 경우 사용할 수 있는 게 1. Time Based SQL Injection 2. Error Based SQL Injection 두 종류의 인젝션을 사용할 수 있는데 필터에서도 보았듯이 1번 해결법 Time Based SQL Injection은 사용불가다. 코드를 자세히 보면 즉 에러가 발생 시 에러페이지를 출력시켜 준다. 2번 해결법인 Error Based SQL Injection을 사용하면 될 ..
[Load of SQL Injection] LOS - xavis(19단계)
WriteUP
19단계 = xvais 소스코드 이번문제에서는 이상하리만큼 필터링되는 게 없으며, regex와 like가 필터링되고 있다. 이번 문제의 의도를 파악하기 힘든부분이었으며, 해당 문제에서 많은 걸 배우게 되었다. 우선 기존문제들과 동일하게 입력값과 db저장된값을 비교하므로, Blind SQL Injection을 이요하면 될 것이다. 정상적으로 구해지는 거 같은데 불안한 기분이 맴돌았다.. 늘 그래왔듯 패스워드길이와 문자열을 추출하기위해 파이썬코드를 작성하여 추출하려 시도하였지만 패스워드의 길이는 12자리인 걸 확인 후 문자열이 구해지지 않았다.... 우선 패스워드의 길이는 12자리였다. 파이썬 코드의 오류인가 싶어 아무리봐도 오류코드를 찾지 못하여 직접 URL로 값을 확인해본 결과 필터도 걸려있지 않는데 A..
[Load of SQL Injection] LOS - DARKKNIGHT(12단계)
WriteUP
12단계 = DARKKNIGHT 소스코드 이번문제에서는 넘겨줘야 할 파라미터값이 pw, no 두 가지로 보인다. 필터링되는 값을 확인해보면 pw 파라미터에서 '을 필터링하며, no파라미터에서 ', substr, ascii, = 를 필터링하고 있다. 이전 문제에서 사용한 것들을 잘 조합해서 사용하면 무난하게 우회가 가능할 거 같다. 우선 '를 필터링하여 문자열을 필터링하고 있다. 이럴 경우 id = 'admin'이 안되지만, My SQL에서는 아스키코드값인 16진수로 표현할 경우 문자열로 인식이 가능하다. 또한 no에서의 substr은 substrin(), mid() , left(), light()등 다양한 함수로 우회가 가능하다. ascii()는 ord(), hex()등으로 우회가 가능하다. =은 이제 ..
[시스템] Frame Pointer Overflow [FPO], SFP Overflow, SFPO
System/System Hacking Techniques
시스템 해킹을 하다보면 보통 ret영역의 값을 악의적으로 변형시켜system함수를 실행시키는 등 해당 프로그램을 제어하지만, 입력버퍼의 제한으로ret영역까지 접근을 하지 못 할 수 있다. 하지만 SFP영역의 단 하위1바이트만으로 ret영역 제어와 비슷한 흐름을 이끌어 낼 수 있다. 그것이 바로 FPO기법이다.해당 기법을 이해하기 위해서는 스택 에필로그 과정과 프롤로그 과정에 대한 이해도가 필요합니다.해당 기법을 사용하기 위해서는 2가지의 조건이 충족 되어야 한다.1. 서브 함수가 존재하여야 한다.2. Buffer Overflow로 서브함수의 SFP의 최소 하위 1Byte를 덮을 수 있어야 한다.대체 어떻게 ret를 건들지 않고 원하는 주소로 이동이 가능한 것일까?이는 함수 에필로그 과정의 eip를 이용하..