본문 바로가기

Computer Security

MySQL Injection에서 LIMIT, quote(따옴표) 우회법 따옴표(캐릭터) 우회 만약 따옴표(')가 필터링이 되어있는데, 캐릭터를 비교를 해야한다던가.. 하는 상황이 있다면ascii 를 사용하시면 됩니다.ascii는 캐릭터를 숫자로 바꿔주는 방식이므로, ascii(a) = 97 과 같은 형태로 따옴표없이도 비교할수 있습니다. LIMIT 우회 인젝션을 할때 LIMIT이 필터링 되어있으면 상당히 걸리적거립니다.그때 LIMIT을 우회하는 방법은, max(), min(), group_concat()을 사용하시면 됩니다. 사용법은 select max(컬럼) from ~~~ , select group_concat(컬럼) from ~~~ 와 같습니다.max,min은 예상하시다싶이, 결과값중 가장 높은 줄 하나, 낮은줄 하나만 불러오는것이구요. group_concat()을 이.. 더보기
SQL Blind Injection 제가 여기저기서 조금조금씩 주워듣고 해본것들을 정리하는것이기 때문에, 일반적인 용어가 아닐수도 있습니다.그리고, 문법은 MySQL을 기준으로 설명하겠습니다. (물론, 다른 SQL에서도 문법만 조금 달리하여 사용 가능합니다.) Blind Injection이란 True or False의 결과값을 이용하여 DB의 내용을 알아내는 기술을 말합니다. 예를 들어서 설명을 해보겠습니다. 어떤 테이블이 있고, search 기능을 통해 특정한 num을 불러오는 기능이 있다고 할때 그 search의 쿼리문은 select * from table where num=[원하는 번호] 대충 이런형태 일것입니다. 그러면, 만약 원하는번호에 "1 and 1=1 #" 를 넣는다면,select * from table where num=1.. 더보기
[BOF원정대/Fedora3] iron_golem -> dark_eyes /* The Lord of the BOF : The Fellowship of the BOF - dark_eyes - Local BOF on Fedora Core 3 - hint : RET sleding*/ int main(int argc, char *argv[]){ char buffer[256]; char saved_sfp[4]; if(argc < 2){ printf("argv error\n"); exit(0); } // save sfp memcpy(saved_sfp, buffer+264, 4); // overflow!! strcpy(buffer, argv[1]); // restore sfp memcpy(buffer+264, saved_sfp, 4); printf("%s\n", buffer);} dark.. 더보기
[BOF원정대/Fedora3] gate -> iron_golem 이전 레드햇에서의 BOF원정대와 달라진점은 1. exec-shield : 스택에 존재하는 어셈블리어는 실행이 안됩니다. 즉, 쉘코드를 스택에 올려봐야 소용이 없습니다. 2. 랜덤스택: 스택의 주소가 계속 바뀌기때문에, 어짜피 스택의 한 지점으로 점프하기도 쉽지 않습니다. 3. 00 으로 시작되는 라이브러리 주소: 00(NULL)이 들어감으로써, 라이브러리 주소를 쓰는순간 스트링이 끊깁니다. 즉, 라이브러리 주소는 마지막에 딱 한번만 사용 가능합니다. 그렇다면, 이를 해결하기위해서 제가 사용할 방법은, execl을 이용하고, fake ebp를 이용해서 GOT부분을 execl의 argument로서 사용할것입니다. 좀더 풀어서 설명하자면, execl의 argument는 다음과 같습니다.execl(실행할 파일 .. 더보기
[PHDays 2012] Binary 100 Write up 문제파일: 저한테는 Binary 100 치고는 어려웠던 문제였습니다. 우선 PEID로 살펴보았습니다. UPX로 패킹이 되어있네요. IDA를 사용하기위해 우선 upx308w를 이용하여 언패킹을 하였습니다. 언패킹을 한후, 파일이름을 unpacked.exe로 바꾸고 작업하였습니다. 그냥 실행하면, "Ups, some calls are wrong or missing" 이라는 말만 하고는 끝납니다.. 올리디버거로 그 부분을 찾아가보면, [403790] 에 있는 값이 0이기때문에 아까와같은 메세지가 떴습니다. 억지로 flag를 보여주는곳으로 점프를 시켜봤자, "HoppaKey"가 뜰 뿐입니다. 하지만, 문제에서 답은 MD5로 주어진다고 했으므로, 이 "HoppaKey"는 답이 아닙니다. 그렇다면, [403790].. 더보기
[PHDays 2012] Misc 200 Write-up 문제파일: 아마 이번 대회에서 가장 쉬웠던 문제가 아닐까........... 합니다. 압축을 풀면 이와 같이 검은색의 이미지가 나옵니다. 이런 이미지문제는, 제 경험이 적어서 그런것일수도 있지만, 그림문제에서는 헤더 부분의 문제, 또는 다른 파일을 숨겨놓는 스테가노그래피. 두가지 경우밖에 생각이 나지 않았습니다. 그래서 헤더부분을 살펴보기위해 다른 GIF 파일을 그림판으로 만든후, 헤더부분을 하나씩 비교해가며 다른부분을 수정해보았습니다. 그중에 이부분을, 이렇게 바꾸자, 정답이 나오네요. 더보기
[Holyshield 2012] Packet 1번 문제풀이 먼저, 파일이 pcap 파일이라는것 정도는 간단히 알수 있으므로, 와이어샤크로 열어보았습니다. 그리고 쭉 내려보면 telnet이 많이 보이고, 오른쪽 클릭해서 'follow tcp stream'을 통해서 보면, 텔넷으로 원격접속을 한것을 알수있습니다. 그러면 우선 텔넷 패킷들만 필터링하기 위해서 filter에 "tcp.port == 23" 으로 패킷 필터링을 합니다. 그러면 대충 나오는 아이피가 10.10.60.173 10.10.60.102 10.10.60.64 10.10.60.90 정도가 나오고, 10.10.60.102가 서버 아이피라는것은 간단히 알수있습니다. 그중 10.10.60.64의 tcp stream을 살펴보면 .ackcat","\x40\x8a\xff\xbf\n"x.[C .ackcat","\x.. 더보기
[Ahnlab wave 2012] network 난이도 low 문제풀이 문제: 사실 대회가 끝난후에 풀어서 정확한 답은 알지 못하고, 우선 푼곳까지 알려드리겠습니다. 이번에 주어진 l.pcap 파일을 쭉 훑어보시면 아이피는 크게 세가지 입니다. 하나는 자신의 아이피인 192.168.0.10 그리고 의문의 10.20.30.40 과 14.63.214.37이 있습니다 그런데 14.63.214.37의 패킷을 훑어보시면 안랩 사이트를 그냥 웹서핑하고있는게 전부입니다. 게다가 10.20.30.40....... 딱봐도 수상한 아이피고, 저런아이피는 흔한 아이피도 아닙니다 그러므로 10.20.30.40의 패킷을 집중 공략해보면 GET /01m07s.reverse 라는 요청을 30초마다 하고있습니다. 그리고 서버도 그 응답으로 의문의 파일을 보내옵니다. 하아..... 그리고 이 파일을 추출.. 더보기
[Ahnlab wave 2012] network 난이도 middle 풀이 문제: 사실 전 대회 끝날때까지 못풀어서 정확한 답은 모르지만 그래도 제가 한 내용을 한번 올려봅니다 이번 대회에서 주어진 m.pcap 파일을 와이어샤크로 열어보면 메일을 3번 주고 받은것을 알수있습니다 그리고 그것들은 base64 인코딩으로 되어있는데 base64인코딩, 게다가 짧은 텍스트파일은 그냥 네이버에 "base64 디코딩 사이트" 대충 이런걸 쳐서 들어가셔서 디코딩 하시면 아래와 같은 내용이 나옵니다 첫번째 메일은 3d 반도체 기술 자료 송부 드립니 안녕하세요. 강병규입니다. 말씀하신 내용 조사해서 회신 드립니다. 감사합니다. 강병규 드림. 첨부파일: 어떤 텍스트파일 대충 이런 내용이었고 두번째 메일은 안녕하세요. 진영인입니다. 이번 휴가 중에 하루 시간이 괜찮아서 같이 수영장에 가요... 장.. 더보기