[DreamHack / pwnable] rop
Wargame/DreamHack
보호되어 있는 글입니다.
[pwnable.xyz] catalog
Wargame/pwnable.xyz
Another name saving app, so you don't forget it.AttachmentBugwrite_name()에서 c->length를 0x20으로 설정했다가 c->name을 입력받은 후에 다시 strlen(c->name)으로 설정한다. strlen()이 호출되는 시점에 c->name에 0x20바이트가 채워져 있다면 strlen()의 return value는 0x21이 되어 c->length에 0x21이 들어가게 된다.이후에 edit_name()에서 c->length만큼 입력을 받는데 ,c->length가 0x21인 경우 1바이트만큼 buffer overflow가 발생하여 c->length에 0xff 이하의 임의의 값을 넣을 수 있다.ExploitationBOF를 이용하여 c->fun..
[pwnable.xyz] PvP
Wargame/pwnable.xyz
iape v2AttachmentBugshort_append()에서 발생하는 buffer overflow를 이용하여 dest를 덮어쓸 수 있다.Exploitationdest가 0이 아니면 그 주소에 x를 복사한다. BOF를 이용하여 dest에 GOT의 주소를 넣고, GOT에 win()의 주소가 들어가도록 하면 플래그를 획득할 수 있다.ex.py
[pwnable.xyz] bookmark
Wargame/pwnable.xyz
Save your links hereAttachmentBugcreate_url()에서 입력한 bm에 : 또는 /가 계속해서 이어지면 ptr은 제한 없이 계속해서 증가한다.bm에 처음에는 9바이트만 입력할 수 있지만 뒤에 0x7f바이트를 이어붙일 수 있다. 이어붙인 문자열이 : 또는 /로만 이루어져 있을 경우, 다음에 create_url()이 한 번 더 호출되었을 때 그 뒤에 다시 0x7f바이트를 이어붙일 수 있게 된다. 이 과정을 반복하면 buffer overflow가 발생하여 logged_in을 덮어쓸 수 있다.Exploitationlogged_in을 0이 아닌 값으로 설정하면 플래그를 획득할 수 있다.ex.py
[pwnable.xyz] attack
Wargame/pwnable.xyz
Can you win the Arena?AttachmentBugdo_skill_change()에서 isAttack에 음수가 들어갈 수 있어 OOB가 발생한다.ExploitationSkillTabel의 앞쪽에는 Team 구조체 2개로 구성된 Teams가 있다.Teams 내부에는 Equip의 Name 필드가 있는데, 이 필드에는 change_equip()에서 임의의 0x20바이트 값을 입력할 수 있다.이 위치에 win()의 주소를 써 놓고 do_skill_change()에서 player->Skills[destSkill].Skill_Func에 OOB를 이용하여 win()의 주소를 넣으면 그 스킬을 사용할 때 win()이 호출되어 플래그를 획득할 수 있다.ex.py
h0meb0dy_
'Wargame' 카테고리의 글 목록 (4 Page)