본문 바로가기

개인 공부128

[웹해킹] LOS 18 - (Nightmare) Lord of sql injection - Nightmare 풀이 los 18번 Nightmare에 대한 풀이 포스팅입니다. 문제 접근 where 뒤에 오는 pw의 입력값을 조절하여 id를 획득하면 문제를 해결할 수 있습니다. 필터링 조건은 다음과 같고, 입력값이 6자리 이상이면 안된다는 추가적인 조건도 있습니다. if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~"); if(strlen($_GET[pw])>6) exit("No Hack ~_~"); 여러 시도를 해보아도 접근 방법이 잘 안떠올라서 힌트를 찾아 본 결과 자동 형 변환이라는 키워드가 나왔습니다. Auto type cast란 Mysql은 비교나 검색을 수행할 때 데이터의 .. 2021. 6. 19.
[웹해킹] LOS 17 - (Zombie Assassin) Lord of sql injection - Zombie Assassin 풀이 los 17번에 대한 풀이 포스팅입니다. 문제 접근 이전에는 보지못했던 strrev라는 함수가 나왔습니다. strrev 함수를 찾아보니 strrev는 문자열을 거꾸로 반환하는 함수입니다. 또 addslahses는 싱글쿼터나 더블쿼터,NULL(%00)의 앞에 특수문자를 문자열로 만들어주는 \를 넣어서 문자열로 만들어 버리는 함수입니다. 즉 다시 말해서 strrev(addslahses)가 적용이되면, 특수문자가 문자열 처리 된 후에 순서가 뒤집히게 된다는 것입니다. 바로 이전 문제에서 활용했던 특수문자를 통해 싱글쿼터를 무력화하는 방법을 사용해서 해결하고 싶은데, 예를 들어 id 값에 '\'를 입력하면 위의 그림과 같이 \가 하나 .. 2021. 6. 19.
[웹해킹] LOS 16 - (Succubus) Lord of sql injection - Succubus 풀이 los 16번 succubus에 대한 풀이입니다. id와 pw를 입력해서, 계정 로그인에 성공하면 해결되는 문제입니다. 문제 접근 싱글쿼터에 대해 필터링이 되어있습니다. 그리고 입력 필드를 살펴보면, id와 pw가 싱글 쿼터로 감싸져있습니다. 따라서 입력값에 임의로 값을 줘보면 결과처럼 싱글쿼터안에 작성되는 것을 볼 수 있습니다. 이전에 풀었던 문제들을 생각해보면, id값을 참으로 만들고, 뒤에는 주석처리해서 문제를 해결하고는 했었습니다. 그러기 위해서는, 지금 문제에 제약조건인 싱글 쿼터를 부수는 작업을 해야합니다. c언어를 배울때, 특수문자를 출력하기 위해 \를 특수기능문자 앞에 작성합니다. 그렇게되면 그것은 더 이상 기능을 하는 문자가.. 2021. 6. 19.
[웹해킹] LOS 15 - (Assassin) Lord of sql injection - Assassin 풀이 los 15번 Assassin에 대한 풀이 포스팅입니다. like 뒤에 입력을 조절해서 admin의 id를 획득해야하는 문제입니다. 이것도 새로운 문제유형이므로 곰곰히 생각해보겠습니다. 문제 접근 이전 문제들과 다르게 like 뒤에 입력을 하는 문제입니다. 따라서 like command에 대해 조금 찾아보았습니다. like "%" -> always true // ?pw=1 or 1=1# 과 같은 방식이라고 생각이 들었습니다. like "%a" -> 끝에가 a인 경우 true like "a%" -> 맨 앞이 a인 경우 true like "%a%" -> a가 들어가는 경우 true 따라서 like 뒤에 항상 참이 되는 값인 %를 입력해서 bli.. 2021. 6. 19.