• Docs

    Relative Path Overwrite

    개요 Relative Path Overwrite (RPO) 는 브라우저와 서버가 상대경로를 해석하는 과정에서의 동작 차이를 악용한 최신 공격기법이다.이 기법을 이해하기에 앞서 URL의 상대경로와 절대경로의 차이에 대해 알아보자.절대경로는 프로토콜과 도메인 이름을 포함한 목적지 주소의 전체 URL을 의미한다.반면에 상대경로는 목적지의 프로토콜이나 도메인을 특정하지 않는다. 절대경로https://rubiya.kr/static/ 상대경로static/somedirectory 여기서 상대경로의 2가지 사용법이 존재한다.첫 번째로 우리는 현재 경로에서 “xyz”라는 디렉토리를 찾을 수 있다.두 번째로 directory traversal 기술을…

  • Docs

    브라우저 XSS 필터 우회의 모든 것

    이 글은 XSS Auditor, XSS 필터의 우회에 대해 다루고 있다.대상은 Chrome, Firefox, Edge, IE11, Safari, Opera 이다.만약 당신이 취약점 진단 업무를 하고있다면 XSS 필터의 우회가 가능하다는 사실을 널리 알리기 위해서 더 많은 우회 방법을 찾아서 알려주십시오.또한 이 글은 일반적인 상황에서 우회 가능한 케이스에 대해서만 다루고 있다.여기에서 다루지 않더라도 실제 상황에서는 더 다양한 방법이 있을 수 있다.당신이 보안 담당자라면 XSS 필터의…

  • Docs

    strtoupper(<ſcript>)

    해당 문서는 위의 트윗을 보고 추가적인 연구를 진행해 Theori 내부 세미나에서 발표한 결과물이다.(사장님 허락받고 올린다) (%C4%B1) 는 LATIN SMALL LETTER DOTLESS I를, (%E2%84%AA) KELVIN SIGN을, (%C5%BF) 는 LATIN SMALL LETTER LONG S를, (%C4%B0) 는 LATIN CAPITAL LETTER I WITH DOT ABOVE 를 의미한다. 그런데 자바스크립트 환경에서 %C4%B1를 touppercase() 하면 == “I”가, %c5%bf를 touppercase()하면 == “S”가 되고, %E2%84%AA 를 tolowercase() 하면…

  • WriteUp

    holyshield 2012 Web1 writeup

    Web1 서버는 iis 7.5버전이 설치되어 있었고 ‘This website has been attacked. So, password link is missing now’ 즉, 패스워드 링크를 찾는게 문제였기에 IIS Short File/Foder Name Disclosure 라는 취약점으로 삽질을 했다. 관련 문서 : http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf /ip/admin/*~1*/.aspx 로 접속했을때 Error Code 0x00000000 가 뜨는것으로 보아 admin디렉토리에 1개 이상의 파일이나 폴더가 존재한다는것을 알 수 있었고 /ip/a*~1*/.aspx /ip/b*~1*/.aspx /ip/c*~1*/.aspx 처럼 한 글자씩 bruteforce해서…

  • WriteUp

    suninatas.com sqli vuln

    suninatas.com 사이트가 처음 만들어졌을때 일체의 시큐어코딩이 적용되지 않아서 sqli, 파일다운로드 공격을 성공해서 Hall of fame 에 이름을 올렸었다. 그런데 올해 초에 다시 한번 SQL Injection 을 성공했는데 mssql 환경에서의 공격경험이 재미있었던지라 공격 과정을 포스팅하겠다. 취약점은 QnA 게시판의 글 수정 기능에서 터진다. 글 수정을 눌러보면 http://suninatas.com/board/view.asp?licen=add_del&idx=2592&num=313&divi=Free 이렇게 뜨는데 idx 인자를 조작이 가능하다. mssql은 서로 다른 타입의 값을 비교해주면 앞의 인자를 에러메세지에서…

  • WriteUp

    webhacking.kr sqli vulns

    45번 문제의 소스다 $_GET[id]=mb_convert_encoding($_GET[id],’utf-8′,’euc-kr’); $data=@mysql_fetch_array(mysql_query(“select id from members where id=’$_GET[id]’ and pw=md5(‘$_GET[pw]’)”)); if(eregi(“admin”,$_GET[id])) exit(); if(eregi(“from”,$_GET[id])) exit(); if(eregi(“union”,$_GET[id])) exit(); if(eregi(“limit”,$_GET[id])) exit(); if(eregi(“union”,$_GET[pw])) exit(); if(eregi(“pw”,$_GET[pw])) exit(); if(eregi(“=”,$_GET[pw])) exit(); if(eregi(“>”,$_GET[pw])) exit(); if(eregi(“”,$_GET[pw])) exit(); if(eregi(“

  • WriteUp

    wechall.net logical bug

    wechall.net은 많은 워게임들을 연동시켜서 점수를 추합해 순위를 매겨주는 사이트이다. 연동을 위해서는 wechall.net 서버에서 각 워게임의 유저의 점수를 알 수 있어야 한다. 그때문에 연동할 워게임에서는 userscore.php 라는 파일을 만들고, wechall.net 서버에서 오는 요청에 응답하는 코드를 넣는다. 예를들자면 webhacking.kr 이라는 워게임의 rubiya / rubiya805@gmail.com 계정을 wechall.net에 등록하려 할 경우에 아래와 같은 순서를 거친다. 1. 내가 wechall.net에 webhacking.kr / rubiya / rubiya805@gmail.com 라는…

  • WriteUp

    2016 Whitehat Contest Final writeup

    침해대응은 2문제가 출제되었고 문제당 서버 1대씩을 각 팀에게 지급했다. 자신의 서버의 취약점을 찾아내 Flag를 인증하면 ssh계정을 주어 패치가 가능하고, 다른팀의 패치가 안된 서버를 공격해 추가득점이 가능하다. —- 경상북도 문제는 회원가입, 로그인, 사진올리기 기능이 있다. $uploadfile = $uploaddir . basename($_FILES[‘ufl’][‘name’]); if (move_uploaded_file($_FILES[‘ufl’][‘tmp_name’], $uploadfile)){ 사진을 올릴 때 별도의 필터링이 없으니 webshell upload가 가능하다. 다들 간단히 취약점을 찾아내어 인증하고 패치했다. 그런데 사실 나는…

  • Docs

    RCE by lfi using php session file without angle bracket

    개요 lfi는 local file include 의 줄임말로 공격자가 원하는 파일을 include 시킴으로써 소스코드를 leak하거나 임의의 코드를 실행시키는것이 목적이다. include를 통해 원하는 코드를 실행시키려면 payload가 담긴 파일이 서버내에 있어야 한다. ( 서버 외부에 있다면 remote file include 공격으로 분류하며 해당 기법은 서버 설정을 심하게 탄다. ) /proc/self/environ, access_log, error_log 등 다양한 방법이 제시되었으나 권한, 셋팅등의 이슈로 성공률이 희박해 좋은 대안이 되지…

  • WriteUp

    Secuinside2017 MyGF write-up

    else if($page == “read”){ $col = addslashes($_GET[‘col’]); $col = preg_match(“/^no$/ismU”,$col) ? $col : “”; There is SQL Injection vuln at read page because of m modifier We can get encrypted content like this. http://ip/?page=read&col=no%0a=0%20union%20select%201,content,3,4%20from%20board%20where%20no=1%23&no=1​ We need aeskey but mysql user board can’t access aeskey database. $contentdec = mysql_fetch_array(mysql_query(“select *, aes_decrypt(unhex(content),unhex(‘”.$aeskey[‘aeskey’].”‘)) as plain from(select * from board.board join member.members) as a…