목록Lab (221)
cdor1's lab
보호되어 있는 글입니다.
간단한 rop? 가젯을 하나 이용한다.프로그램을 실행하면 gets로 길이제한없이 입력을 받는데 이 프로그램은 아무런 보호기법이 적용되어있지 않다.sub_400320부분에서 내가 입력한 값에 "Smash me outside, how bout dAAAAAAAAAAA"가 들어가는지 판단한다.그래서 64bit calling convention대로 저 문자열은 esi에 넣고나의 input은lea rax, [rbp+var_40]mov rdi, rax를 거쳐 rdi레지스터에 저장된다. 문제도 매우 심플하고 간단해서 혹시 jmp rdi 가젯이 있을까 생각해 찾아보았는데히히 nop + shellcode + 문자열 + jmp rdi 해주면 된다 from pwn import * s = process('./smashme') ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
레벨을 받고 무슨 돈을 출력해준다. 뭐가 필터링 되긴 하는데 =, ', char 등 꽤 많은 문자열들이 필터링 안되어있다.http://webhacking.kr/challenge/web/web-23/index.php?lv=2%0aor%0aid=admin간단히 이렇게 넣으면 풀려야하는데 아마 admin이라는 문자열을 필터링하는 것 같다.요번에는 char 함수를 써서 admin을 만들어보려한다.http://webhacking.kr/challenge/web/web-23/index.php?lv=2%0aor%0aid=char(97,100,109,105,110)
보호되어 있는 글입니다.
id와 pw를 받는 창이다.admin으로 로그인 하면 될 것 같은 느낌이 온다. 맞았다. admin으로 로그인하면 solve를 불러준다.위 소스를 잘 보면$input_pw = md5($_POST[pw], true);pw값을 md5로 바꿔서 넣어주는데 뒤에 true라는 인자가 붙는다.길이 16의 바이너리 형식으로 반환해 준다고 한다.하지만 이 md5해쉬에 =, '등 쿼리에 변형을 줄 수 있는 값이 들어가면 어떻게 될까? 내가 생각한 공격 방식은select id from challenge_51_admin where id='$input_id' and pw='$input_pw'select id from challenge_51_admin where id='$input_id' and pw='asdf'='ghjk'이..
heap overflow를 그냥 준다...대회 당일에 ubuntu 14.04는 파일 실행이 안되길래 16.04 찾아 깔려다가 귀찮아서 코드 분석만 했는데 c++이라 잘 보이지도 않고 의욕 떨어져서 끈기있게 잡지도 않았다.aws를 16.04로 갈아엎고 실행해서 풀었는데 손퍼징의 중요성을 알았다 ㅎ..여기서 인풋값을 제한하지 않는다.뒷쪽 user_name의 포인터가 존재하는데 이 부분을 덮어서 leak할 수 있다. 또한 user_name ptr에 입력받는 부분이 있으므로 포인터를 got로 덮어놓고 인풋을 넣어서 exploit할 수 있다. from pwn import * #s = process('./petshop') s = remote('localhost', 4000) def buy(select): print..
reversing.kr의 모 문제를 풀다가 알게 된 덤프 방법이다.프로그램이 내부에서 섹션을 만들고 그곳에 코드를 쓰는 등 일련의 작업을 하면 분석하기 매우 귀찮아지는데섹션을 모두 만들고 코드가 모두 쓰인 상태에서 memory dump를 떠서 분석하면 간단해진다. -IDA remote debug 상태-shift + f2 excute scriptauto file, fname, i, address, size, x; address = size = fname = "C:\\dump_mem.bin"; file = fopen(fname, "wb"); for (i=0; i