Los(25)
-
[Lord Of SQLInjection] yeti Write-up
정말 오랜만에... 다시 풀어보았다. 작년에 풀었을땐 너무 어려워서 라이트업 보면서 해야했고 봐도 이해가 안 되긴 했는데 실력이 늘긴 했나보다. exploit.pyimport requestsimport timeurl = "https://los.rubiya.kr/chall/yeti_e6afc70b892148ced2d1e063c1230255.php"cookies = {"PHPSESSID": "f7gfbm11p5npmbik3g0pd4qi5n"} #발급받은 토큰 입력def find_pw(): pw_len = 0 for i in range(1, 40): payload = f"' IF (LEN((SELECT pw FROM prob_yeti WHERE id='admin'))={i}) WAITF..
2026.01.04 -
[WriteUp]/[Lord Of SQLInjection] death
특징- admin이 필터링 되어 있음- hex 또는 concat 함수로 우회 가능→ 위 특징을 이용해서 exploit을 구상한다.- url 값[도메인 값]?id='
2025.04.28 -
[WriteUp]/[Lord Of SQLInjection] cthulhu
특징- modsec.rubiya.kr 서버가 ModSecurity Core Rule Set v3.1.0 with paranoia level 1 버전으로 돌아가고 있다는 문구가 있음- WAF를 이용해서 우회 가능하냐는 문구 있음- id와 pw 항목에서 admin을 대소문자 구분 없이 필터링하고 있다.- 웹 방화벽 해당 버전을 우회하여 admin으로 로그인하면 문제가 해결될 것임- id와 pw를 파라미터로 받으니 \로 싱글 쿼터를 우회하며, hex 변환으로 admin을 0x61646d696e로 우회하여 쿼리를 주입하면 해결 될 것이다.- ModSecurity Core Rule Set v3.1.0을 깃허브에서 찾아서, 페이로드를 사용하면 된다.https://github.com/coreruleset/coreru..
2025.04.28 -
[WriteUp]/[Lord Of SQLInjection] alien
코드 특징금지당한 예약어- administrator, and, or, if, coalesce, case, 언더바(_), 점(.), prob, time- query1은 파라미터가 작은 따옴표 처리되어 있지 않고, query2는 작은 따옴표 처리되어 있어서 각각 두 가지 조건문을 통과하여야만 solve(”alien”)이 호출됨- coalesce는 주어진 파라미터(여러 개 들어갈 수 있다)에서 NULL이 아닌 첫 값을 반환한다. Solve작은 따옴표가 있을때나 없을때나 동일한 결과를 만들 수 있는 방법→ example : ?no=1 union select 1— ‘ union select ‘1결국 둘 다 1 union select 1이 실행되는 것.→ 원하는 부분은 1에 대체하면 query1과 query2를 ..
2025.04.28 -
[WriteUp]/[Lord Of SQLInjection] zombie
zombie- 필터링 부분을 보면 ace를 필터링 한다.- replace를 필터링 하겠다는 의미-> 이전 문제에서 사용했던 페이로드를 사용 불가함- informaton_schema DB에 processlist라는 테이블이 존재함-> 해당 테이블의 INFO 칼럼에 이전에 실행했던 쿼리문이 저장되어 있음[도메인 값]?pw=' union select substr(info, 38, 72) from information_schema.processlist%23
2025.04.28 -
[WriteUp]/[Lord Of SQLInjection] ouroboros
if(preg_match('/prob|_|\.|rollup|join|@/i', $_GET['pw'])) exit("No Hack ~_~");pw에 필터링 목록이 있다면 No Hack 을 출력하고 종료함$query = "select pw from prob_ouroboros where pw='{$_GET[pw]}'";echo "query : {$query}"; - 필터링에 걸리지 않았다면 select pw from prob_ouroboros where pw=’{$_GET[pw]}’에 삽입됨- 그 후 삽입된 쿼리문을 출력함$result = @mysqli_fetch_array(mysqli_query($db, $query));if($result['pw']) echo "Pw: {$result[pw]}';if(($r..
2025.04.28