Password [view-source] 사실 상 볼 코드는 중간에 까지이다. session에 chall4가 post로 온 key값과 일치하면 풀리는 문제이다. 그러면 chall4값을 봐야하는데 1. hash 변수에 10000000~99999999까지의 랜덤 값과 + salt_for_you를 합친 값을 저장한다. 2. 이 hash를 chall4 세션값에 저장하고 3. hash는 sha1암호화를 500번 진행한다. 4. 그다음 이 암호화된 hash가 화면에 뜬다. 먼저 sha1암호화는 단방향 암호화로 다시 복호화 할 방법이 없다. 그렇지만 같은 값을 암호화 할 시 똑같은 암호화 값을 가진다는 문제점이 있다. 이를 위해선 브루트 포스도 방법인데 sleep(1)으로 막아놨다. 그러면 10000000~99999..
분류 전체보기
들어가보면은 login과 join창이 있다. Join창을 눌러보면 Access_Denied라고 뜬다. 그럼 login 창을 들어가보면 평범한 login 창이 뜬다. 보나마나 admin으로 로그인 해야 하니 admin과 아무거나 입력하고 로그인해보면 역시 Wrong password라고 뜬다. join 창을 들어가야 할텐데 login 창의 url은 https://webhacking.kr/challenge/web-05/mem/login.php 이다. join창의 url은 /mem/join.php라는걸 유추 해볼 수 있고 들어가보면은 bye라고 뜬다. join창을 좀 더 알아보기 위해 버프스위트로 봐주면은 응답 스크립트가 아래와 같이 나와있다. 대충 뭐 복잡하게 써놓은거 같으니 개발자도구에 script창에 복붙..
"; if(!is_numeric($_COOKIE['PHPSESSID'])) exit("Access Deniedview-source"); sleep(1); if($_GET['mode']=="auth"){ echo("Auth~"); $result = file_get_contents("./readme/{$_SESSION['idx']}.txt"); if(preg_match("/{$_SESSION['idx']}/",$result)){ echo("Done!"); unlink("./readme/{$_SESSION['idx']}.txt"); // 파일 삭제 solve(60); exit(); } } $p = fopen("./readme/{$_SESSION..
"); }echo("Admin page");if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!"); // \\s => 모든 공백$db = dbconnect();$rand=rand(1,5);if($rand==1){ $result=mysqli_query($db,"select lv from chall7 where lv=($go)") or die("nice try!");}if($rand==2){ $result=mysqli_query($db,"select lv from chall7 where lv=(($go))") or die("nice try!");}if($rand==3){ $result=mysqli_query($db,"selec..