웹해킹(77)
-
old-53 풀이
메인 페이지에 아무것도 없길래 바로 코드부터 가져왔습니다 answer에 들어가는 값이 $hidden_table과 같으면 문제가 풀린다고 합니다 그런데 테이블 조회를 해야 풀리는 문제에서 select가 필터링된 게 꽤나 난감하네요 해결 방안을 찾기 위해 구글링을 해봤습니다 https://blog.naver.com/withrubiya/70170942917 sql인젝션 필터우회의 모든것(펌) 아 솔직히 블로그 관리하는거 진짜 귀찮은것같아요 이걸 어떻게 꾸준히하지 그냥 그렇다고요... blog.naver.com 다양한 필터링 우회 방법이 나와있는 블로그를 찾았습니다! 저는 컬럼명을 모르니 procedure을 사용해 보겠습니다 이제 나온 테이블 명을 answer에 넣어서 보내주겠습니다
2024.03.04 -
old-08 풀이
SQL Injection 문제입니다 쿼리의 결과가 "admin"이어야 문제가 해결됩니다 만약 ck에 값이 들어있지 않다면, agent와 ip, id를 새로 삽입해 줍니다 (id는 guest로 고정 삽입이네요) id보다는 agent를 건드려주면서 뒤쪽 부분은 주석처리 해주는 게 관건인 것 같으니, BurpSuite로 이 부분을 만져주겠습니다
2024.03.04 -
old-22 풀이
admin으로 로그인을 해야 풀리는 문제입니다 컬럼 이름을 친절하게 알려주고 있는 걸 보니, SQL Injection 문제인 듯합니다 페이지 코드를 살펴봤는데 별다른 힌트는 없었습니다 Blind SQL Injection 문제일 것이라 예상하고, 우선 가입부터 해주겠습니다 로그인을 하니 password hash라는 것이 나옵니다 형태를 보니 md5처럼 생겼는데, 복호화해서 무슨 내용인지 확인해 보겠습니다 복호화는 아래 사이트에서 진행했습니다 (다른 사이트에서 하니까 값이 안 나오더라고요....) https://hashes.com/en/decrypt/hash Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, ..
2024.03.03 -
old-56 풀이
페이지에 접속해 보니 readme, hi~에 링크가 걸려있습니다 먼저 들어가보겠습니다 첫 번째 페이지는 access denied가 뜨면서 접근할 수가 없네요 개발자 도구를 열어서 코드를 봐도 별 다른 내용은 없습니다 두 번째 페이지는 그냥 hello~라는 문자열만 출력되고 맙니다 역시나 페이지 코드는 아무것도 없네요 메인 페이지로 가서 search 기능을 써보겠습니다 우선 test라고 입력해 보겠습니다 화면이 위와 같이 바뀌었습니다 no, id, subject, secret이 그대로 뜨는 걸 보면... 위에 있는 테이블에서 동일한 요소가 포함되어 있는지 찾는 기능 같습니다 여기서 봐야 할 점은 id나 no가 검색이 되는 건지, 문서의 내용이 검색되는 건지 등을 따져봐야 한다는 거죠 그래서 코드를 살펴봤는..
2024.03.02 -
old-51 풀이
POST 형식으로 id와 pw를 가져옵니다 id는 addslashes()로 이스케이핑을 해주고, pw는 md5()로 처리를 해줍니다 그런데, pw에서 md5 처리를 할 때, raw_output 부분이 true로 되어있습니다 이런 경우에는 md5 해시값이 16bytes의 바이너리 형태로 나오게 됩니다 바이너리 형태에 특수문자가 포함되는걸 이용해서, SQL Injection을 시도해 보면...? 될 것 같습니다 "select id from chall51 where id='{$input_id}' and pw='{$input_pw}'" result 변수에 들어가는 MySQL 쿼리를 가져왔습니다 pw='{$input_pw}' 부분을 참으로 만들어줘야 하는데, 바이너리 값에 'or'이 포함되도록 하는 값을 찾아 넣..
2024.02.28 -
old-07 풀이
go라는 변수에 val의 값을 GET 형태로 가져옵니다 그리고 go에 2, -, +, from, _, =, \s, *, \가 있는 경우, "Access Denied!"를 출력하면서 필터링을 해줍니다 그리고 rand 변수에 랜덤 값을 하나 뽑아서 넣어주고, rand의 값에 따라 조건문을 다르게 실행합니다 쿼리의 결과가 2인 경우에만 문제가 해결됩니다 SQL Injection 문제인 것으로 보입니다 쿼리의 결과를 2로 조작해야 하는데, 필터링 목록에 2가 있네요... 이걸 어떻게 우회하는지가 관건인 것 같습니다 if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!"); 좀 더 보기 편하도록, 필터링 부분만 다시 가져와봤습니다 숫자 2..
2024.02.26