level1@io:/levels$ gdb -q level01Reading symbols from /levels/level01...(no debugging symbols found)...done.(gdb) disas mainDump of assembler code for function main: 0x08048080 :push $0x8049128 0x08048085 :call 0x804810f 0x0804808a :call 0x804809f 0x0804808f :cmp $0x10f,%eax 0x08048094 :je 0x80480dc 0x0804809a :call 0x8048103 End of assembler dump. (gdb) p 0x10f$1 = 271(gdb) qlevel1@io:/levels$ ..
xor를 할때 값에 0x00을 주면 자신이 나옴 0x50 ^ 0x00 = 0x50 그래서 keybuf의 값 128(sizeof int * 32)을 모두 0x00으로 주고 keybuf를 구했음. 사실 처음에 이 문제를 풀었을때는 system함수 구해서 풀었는데 IDA로 까보니까 execve.plt가 있었다. 그래서 .bss section에 read로 execve의 인자값이 될 "/bin/sh", {"/bin/sh", 0}를 만들어두고 execve의 인자값을 bss영역의 주소로 줬음 확실히 system 구하는것보다 깔끔하게 나옴
원래 C++에서도 C의 go-to 문과 같이 이슈가 되는것이 많지만 C++을 제대로 시작한지 매우 조금 됐기 때문에 필요하다 싶으면 닥치는 대로 가져가 썻다(....) //상속, 프렌드 등등 아무것도 모른다. C++에 익숙해지기 위해 만들었다.. 특히 std::bitset을 써서 8비트와 6비트씩 끊는걸 구현했는데 매우 만족스러웠다. 예전에 C에서 짯던 코드와 비교하면 확실히 깨끗해졌다. C++을 좀 더 공부해서 내가 만들고 싶은 프로그램을 만들고 싶다. Encrypted String : VkdocGMxOUpjMTlDUVZORk5qUmZSVzR2UkdWRGNubHdkRjlVYjI5c1gxOURLeXM9 Decrypted String : This_Is_BASE64_En/DeCrypt_Tool__C++
ASLR 걸려있고 buffer 주소를 출력해 주지 않는다. fusion 내부에 있는 ROPgadget 프로그램을 이용하면 jmp *%esp를 쉽게 찾을 수 있다. ret 바로 뒤 4바이트로 점프하게 되고 esi에 우리가 넣은 쉘코드가 위치하게 됨 ret뒤 4바이트에다 jmp *%esi opcode넣어주고 ret를 jmp *%esp로 주면 쉘 획득 가능 https://gist.github.com/err0rless/49c2b54554dc67fd2bb3
Plaid CTF 2013 ropasaurusrex Binary->http://shell-storm.org/repo/CTF/PlaidCTF-2013/Pwnable/ropasaurusrex-200/ Server Ubuntu 14.04 LTSClien Kali Linux ASLR, NX-Bit root@Kali ~/s/e/ropasaurusrex# checksec --file binaryRopasaurusrex RELRO STACK CANARY NX PIE RPATH RUNPATHNo RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 풀이과정은 http://err0rless313.tistory.com/entry/CodeGate-Junior-2014-N..
최초작성일 2014 - 12 - 12최종수정일 2015 - 10 - 22 root@Kali ~/s/exploits# checksec --file ./nuclear RELRO STACK CANARY NX PIE RPATH RUNPATH Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 메모리 릭하는건 cd80님 문서 보면 모두 나와있음 - http://cd80.tistory.com/44 원래 system함수 구해서 cmd를 넣어서 실행시켰었는데 nc로 전송값 받는게 귀찮아서mprotect로 쉘코드 실행권한 주고 실행시킴->http://err0rless313.tistory.com/entry/mprotect-%ED%95%A8%EC%88%9..
Password를 찾아라! Season 1 패스워드를 요구하는 프로그램이 있다 해당 프로그램의 패스워드를 찾으시오. 인증 key 값은 해당 프로그램의 패스워드입니다. 다운로드 : CrackMe_1.exe ------------------------------------------------------------------------------- Crack MePassword is a series of alphabets and numbersPassword : asdfasdfWrong password! Try agian 실행해보면 콘솔창으로 이렇게 실행할 수 있음. 패스워드는 알파벳과 숫자로 이루어져 있다고 한다. IDA로 살펴보면 패킹도 안돼있고 바로 문자열이 보인다. int __cdecl main_0()..