전체 글(242)
-
[WriteUp]/[Lord Of SQLInjection] darkknight
여기서 살펴봐야하는 부분은if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[no])) exit("No Hack ~_~");if(preg_match('/\\'/i, $_GET[pw])) exit("HeHe");if(preg_match('/\\'|substr|ascii|=/i', $_GET[no])) exit("HeHe");$query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}";→ 위의 코드에서 no를 받을때, prob와 _,.,(.)을 필터링하고 추가로 ‘와 substr와 ascii, =을 필터링한다.→ pw를 받는 변수에서는 ‘를 필터링한다.⇒ 둘 다 i를..
2025.03.05 -
[WriteUp]/[Lord Of SQLInjection] golem
#7번째 줄$query = "select id from prob_golem where id='guest' and pw='{$_GET[pw]}'";#15번째 줄if(($result['pw']) &&($result['pw'] == $_GET['pw'])) solve("golem");→ 이 두 줄을 해석해보면 id는 guest로 고정되어있고, pw는 입력 받은 값을 처리하는 것인데, 입력받은 pw랑 결과 값이랑 일치해야 클리어 값이 나오는 것 같다.#5-6번째 줄if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[pw])) exit(No Hack ~_~");if(preg_match('/or|and|substr\\(|-/i', $_GET[pw])) exit("HeHe");→ 필터링이 ..
2025.03.05 -
[WriteUp]/[Lord Of SQLInjection] skeleton
→ 평문 작성을 위해 작성해야할 쿼리를 고려해야한다.$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0";if($result['id']=='admin') solve("skeleton");→ 해석해보면 id값은 quest로 고정이 되어있고, pw는 입력 받은 값이며, and 1=0까지 참이 되도록 해야된다.→ 그럼에도 결과는 id값이 admin이어야 문제가 해결되는 것을 알 수 있다.→ 그럼, id를 admin으로 만들고 and 1=0(거짓 조건)을 주석 처리하면 된다.[도메인값]??pw=' or id='admin'%23
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] vampire
→ 문제를 보면,$_GET[id] = str_replace("admin", "", $_GET[id]);→ admin이 “”로 치환되고 있음을 확인할 수 있다.→ admin을 리턴하되 인식시키는 방법을 사용하기 위해 다음과 같이 브라우저에 접속한다.[도메인값]?id=adadminmin→ 클리어 창이 뜬다.
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] Goblin
→ 문제 접속하면 뜨는 창→ 코드를 해석해보면 id는 이미 guest로 고정 되어있고, no는 get방식으로 입력받는 것을 볼 수 있다.⇒ 그런데 코드 후반부에 id를 보면 admin으로 받아야 goblin 해결 문구를 볼 수 있다는 것을 파악할 수 있다.⇒ 따라서 id를 admin으로 변경해주는 쿼리문을 작성한다면 취약점을 뚫을 수 있다,먼저 no = 1로 설정하고 접속을 하면→ admin으로 접속된 게 아니라서 guest 관련 창이 뜨는 것을 볼 수 있다.→ no = 1에는 guest 권한이 할당 된 것을 확인할 수 있다.[도메인 값]no=3 or no=2→ no=3은 false라서 저절로 무시되고,→ no=2는 true라서 무조건 성립하는 것을 볼 수 있으며,→ 클리어 창이 띄워지는 것을 볼 수 있다.
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] cobolt
→ 해당 브라우저로 접속하면 바로 이런 코드가 나온다.→ gremlin 문제와 매우 유사하나 md5로 암호화된 채 쿼리가 전송된다는 점에서 차이를 지닌다.if($result['id'] == 'admin') solve("cobolt");해당 코드를 보면 id는 admin이어야하고, pw=md5('{$_GET[pw]}')의 암호화 자체가 무시되어야하므로[도메인 값]?id=admin' or '1'='1이렇게 평문을 작성해서 브라우저 접속하면 인코딩 되어 페이로드에 접속할 수 있고→ 클리어한 화면을 볼 수 있다.
2025.03.05