본문 바로가기
개인 공부/WEB

[웹해킹] LOS 22 - (Dark_eyes)

by 아메리카노와떡볶이 2021. 7. 3.
728x90
Lord of sql injection - Dark eyes 풀이

los 22번 dark eyes에 대한 풀이 포스팅입니다.

문제 접근

if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~");
if(
preg_match('/col|if|case|when|sleep|benchmark/i'$_GET[pw])) exit("HeHe")

계속해서 필터링이 큰 힌트가 되어주는 느낌이다. 21번 문제와 마찬가지로 time based sql injection에 대해 제한을 거는 것 같고, 추가로 if와 col,case when 에 대한 필터링도 있다. error based sql injection 문제인것같은데 

21번 문제와 다르게 에러가 출력되지않는다.

$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(
mysqli_error($db)) exit();

따라서 앞과 반대로, 에러가 발생되지 않을때 정상적으로 쿼리가 출력되는 것을 이용해서 문제를 해결해야할 것 같다

?pw=' or id ='admin' and (select 1 union select 2 where !(length(pw)<10)) %23

위와 같이 쿼리를 넣었을 떄, pw의 길이가 10보다 작다면 에러가 발생되지 않을 것이다. 만약 pw의 길이가 10보다 크다면 에러가 발생되어서 exit()가 실행될 것이다. (에러 출력 문구는 없지만)

따라서 21번 문항을 살짝 뒤집어서 생각하면 되는것이다.

이것을 가지고 brute forcing을 진행해서 패스워드를 알아보자.

 

 

 

패스워드 구하기

사실 where 절을 이용하는 것만 떠올린다면 21번 문제와 다를게 없어서 크게 설명할게 없다.

brute force에 활용한 코드로 설명 대체 .!

길이 구하기

 

비밀번호 구하기

최종 pw는 '5a2f5d3c'이다

clear!!

728x90

'개인 공부 > WEB' 카테고리의 다른 글

[웹해킹] LOS 24 - (Evil_Wizard)  (0) 2021.07.03
[웹해킹] LOS 23 - (Hell_Fire)  (0) 2021.07.03
[웹해킹] LOS 21 - (Iron Golem)  (0) 2021.07.03
[웹해킹] LOS 20 - (Dragon)  (0) 2021.06.19
[웹해킹] LOS 19 - (Xavis)  (0) 2021.06.19

댓글