전체 글
-
Shadow CTF write up$ Capture The Flag $ 2019. 11. 5. 23:25
Example Hello Flag : SHADOW{He11o_W0rld!} ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ Web SourceCode 사이트에 들어가 보면 아래와 같습니다. 소스코드를 백업 시켜두는 파일인 index.phps 를 들어가 보면 아래와 같은 코드를 확인 할 수 있습니다. eval(gzinflate(base64_decode())) 이므로 아래의 사이트 에서 실행을 해보겠습니다. http://www.tareeinternet.com/scripts/decrypt.php DQogJGZhbGcgPSAiU0hBRE9Xe1BIUF8zTkMwRDFOR30iOyA= 를 base64로 디코딩을 하면 아래와 같은 Flag 를 얻을 수있습니다. Flag :..
-
Host Split Attack$ 웹 해킹 $/$ 웹 해킹 이론 $ 2019. 11. 5. 23:11
Host Split Attack CTF 문제를 풀다가 우연히 Host Split Attack와 관련된 문제를 접했는데 알아보니, 올해 BlackHat 에서 Microsoft 연구원이 발표한 내용이였더라고요 ms 연구원이 발표한 Host Split Attack : https://i.blackhat.com/USA-19/Thursday/us-19-Birch-HostSplit-Exploitable-Antipatterns-In-Unicode-Normalization.pdf 그래서 Host Split Attack 에 대해서 한번 다뤄 보려고 합니다. 해당 기법을 이해하기 위해서는 IDN(Internationalized Domain Name) 에 대해서 알아야 합니다. 대부분은 아스키 코드로 된 도메인을 많이들 사용..
-
HolyShield CTF write up$ Capture The Flag $ 2019. 10. 28. 13:32
Forensic Leak1 문제를 압축 해제를 하고 vmdk를 문자열 검색을 해보면 아래와 같습니다. Flag : HS{Y0u_4re_7hE_B3sT_rEpairm4N} ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ Web Hidden Board[서버가 닫힘..] 먼저 robots.txt 에 들어가서 관리자 페이지 URL 을 획득한다. 관리자 페이지는 아래와 같습니다. 해당 사이트에 들어가 보면 이런 식의 화면이 출력이 됩니다. eval 과 f라는 변수에 값이 없다는 에러 문과 file_get_contents 라는 함수가 filename 이 비어있다고 함녀서 Warning 으로 뜹니다. file_get_contents를 보고 lfi 공격을 할 수가 있습니다. ..
-
[Lord of SQL_injection] #28 frankenstein$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:42
문제를 보면 일단 if(mysqli_error($db)) exit("error"); 를 보면 결과가 나오지 않고 error 가 일어났을 때 에러가 출력되는 error base sql injection 문제입니다. union과 (, ) 가 필터링 되는 것으로 보아 if문을 이용한 union select 에러를 일으 킬수 없을 것 같아서 case when else ~ end 를 이용하기로 했습니다. 에러로 mysql 에서는 9e307*N의 형식으로 값을 넘기면 Logical Error 를 띄어서 error가 나게 됩니다. 페이로드 : ?pw=1' or case when id='admin' and pw like '[ ]%' then 9e307*2 else 0 end%23 https://los.rubiya.kr..
-
[Lord of SQL_injection] #27 blue_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:41
문제를 보면 일단 필터링에 \ 와 ' 가 필터링 되고 있습니다. 하지만 쿼리문을 만들고 result 값을 만든 후에 필터링을 하기 때문에 No Hack ~_~을 띄워도 쿼리문을 실행 할 수 있습니다. sleep 함수를 이용해서 값을 구해 보겠습니다. sleep을 이용하기 위해서는 if 문을 이용해야 하는데 아래와 같습니다. if(조건문,참 반환값, 거짓 반환값) 을 이용하면 될 것 같습니다. https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php?pw=%27%20or%20id=%27admin%27%20and%20if(length(pw)%3E0,sleep(3),0)%23 No Hack이 떠도 3초동안 sleep 하였습니다. ..
-
[Lord of SQL_injection] #26 red_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:40
id의 길이가 7이하이어야 하고, no에 값이 없으면 1이라는 값을 넣는다. 먼저 id에 참을 띄우고 no가 admin과 같은 데이터가 있으면 Hello admin이 나오게 됩니다. id에 %23 인 한줄 주석을 넣고 no에서 개행 문자를 넣어서 아래와 같이 쿼리문을 넣으려고 합니다. id='||no=#&no=%0a1 이라는 쿼리를 넣게 되면 id의 반환 데이터가 아래와 같이 됩니다. [id=''||no=1] 이 되고 참일 때 admin을 출력합니다. no 값을 변경하면서 admin에 있는 no 값을 정확히 맞추면 Hello admin이 뜰 것 입니다. 반복적인 쿼리문을 전송 해야 하기 때문에 python code를 작성해 보겠습니다. 값을 확인해 보면 다음과 같습니다.
-
[Lord of SQL_injection] #25 green_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:38
문제를 보면 쿼리문이 2개 인것으로 보아 union select 를 이용해서 데이터를 넘겨야 할것 같습니다. 일단 이런 문제를 접했을때 필터링 값을 보면 '(싱글 쿼터)를 필터링 하고 있습니다. 그렇기 때문에 문자열을 넘길 수 없기 때문에 hex값으로 넘겨야 합니다. union select 로 받아야 하는 데이터는 2개 result['id']와 result['pw']이기 때문에 아래와 같이 첫번째 쿼리문을 우회 할 수 있습니다. https://los.rubiya.kr/chall/green_dragon_74d944f888fd3f9cf76e4e230e78c45b.php?id=\&pw=%20or%20id=0x61646d696e%20union%20select%201,2%23 이제 서브 쿼리에 값을 1,2 대신에..