hgame-week1
第一周我就有点开摆了,只吧web,逆向,和杂项给ak了(其他都懒得写了),密码只写了个rsa算法的题目,对rsa算法有了一些了解。下周要打起精神了,不能摆下去了。web1.2048*16这道题目我们打开一个发现是一个2048的游戏,题目要求我们组合出32768这一个方块。我们查看源码会发现,该题目对源码进行了混淆,非常难看。我们先进行常规搜索。如搜索alert,flag,32768都没有用但是这道题目在下方给出了,2048这个游戏的原地址,那么这个游戏肯定是将2048进行了一些魔改。我们点开2048一些的原址,f12查看源码搜索2048我们会发现一个变量e.value,我们虽然不知道这个e变量是什么但是我们可以进行调试,我们先在这一含加一个断点,运行我们可以发现这个e里含有value,x和y,而且value值为2那么我们可以猜测一下,这个就是方块这个元素,xy代表位置和value代表值,我们尝试在控制台修改e.value的值,取消断点,运行程序发现多了个2048的方块。那么我们只要在我们的题目里找到e.value然后进行修改即可。我们点开题目的控制台会发现其无线debug导致我们无法调 ...
初探JavaScript原型链污染
写这篇文章的原因是我在放寒假经过了长久的摆烂后痛定思痛不能再这么下去了,因为明天就是hgame了所有我想着刷点hgame的内容,结果找不到复现平台,只在NSS上找到一些,这篇文章是我在写week4的Shared Diary Antel0p3时遇到了原型链污染,一点都不会所以我就打算学习一下JavaScript的原型链污染。原型链污染的前置知识js的对象对象创建的几种方式1.通过字面量模式创建1var a={a:"aa",b="cc"}
2.通过类来进行创建12345678calss a{ constructor(name,age) { this.name=name; this.age=age; }}var b=new a(lss,18);
通过类来创建对象,constructor()是自带的函数。
3.通过构造函数来进行创建对象12345function Add(){ this.a="a"; this ...
php伪协议
什么是php伪协议
ssti模板注入
flask框架Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。我们可以使用flask框架来快速搭建web
flak框架基础代码1234567891011121314151617181920from flask import Flask#从flask模块里导入Flask类app = Flask(__name__)#创建@app.route('/')#路由规则def hello1(): return "hello"@app.route('/lll')#静态路由def hello2(name): return "hello lll"@app.route('/<name>')#动态路由def hello2(name): return "hello %s" % name@app.route('/id/<int:ID>')#变量为int型的动态路由def I ...
md5碰撞
md5()函数介绍md5(str,raw)str为要编码的字符串raw为编码模式默认为false即32为16进制字符。如果输入为true则为原始16字符二进制格式
md5()sql注入我写过的一道题目中有如下sql查询语句1select * from users where username='$user' and password='."md($password,true)".'这时候我们给password输入ffifdyop该字符就会被编码为276f722736c95d99e921722cf9ed621c转为字符串为'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c这时候我们可以发现or前后都有’这回将之前和之后的’闭合or’6diaid’只要开头为数字那么就相当于or上一个数字即or上一个真那么就会如果这个查询
md5弱比较绕过1234QNKCDZO240610708s878926199as155964671a
因为php的弱比较所以我们可以使用编码后为0e开头的进行绕过
md5强比较绕 ...
nssround#16的复现
我个人认为这两到题目是有纪录的价值的RCE但没完全RCE上来的md5绕过就不多讲直接讲rec123456789<?phperror_reporting(0);highlight_file(__FILE__);$shell = $_POST['shell'];$cmd = $_GET['cmd'];if(preg_match('/f|l|a|g|\*|\?/i',$cmd)){ die("Hacker!!!!!!!!");}eval($shell($cmd));我们可以看到其将字母f,l,a,g?*都过滤了我们也就无法使用bash或者sh来绕过,也无法使用常用的方法,我查了以下wp有以下两种题解
1.[9-q]绕过[9-q]在linux里代表了ascii在9-q之间的字符,与通配符相似我们可以使用该方法进行绕过12?cmd=more /[9-q][9-q][9-q][9-q]shell=system
2.使用$_POST绕过我们可以给shell传值为urldecod使shell ...
xss注入
xssS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
xss的原理说起xss感觉和sql注入很像,xss是将一些恶意代码嵌入前端代码中,当用户浏览该网页时就会触发该恶意语句,一般恶意语句为js代码。例如一个留言板没有对用户输入的内容进行过滤这就会导致单黑客在留言版里输入一些恶意语句时会被后端保存在数据库中,当有用户浏览该留言板时,后端代码会将该恶意语句输出到web页面上导致用户执行该代码。
注入点1.HTML标签之间<div>:可以直接写入JS,web会直接执行<title>``<iframe>等包含htmlEncode功能的标签:先闭合标签,再写入JS
2.HTML标签之内插入点在value内,type不为hidden:由于w ...
CSRF
所谓CSRF就是(Cross-site request forgery),中文名称:跨站请求伪造
攻击过程用户A在浏览器登陆了网站B,这时候服务器会发送cookie给浏览器,而这时如果用户访问了危险网站C,这时C会发送一个访问网页B的请求,而这些请求中往往会进行一些危险操作,如修改用户密码,甚至更加严重。
举例假设一个转帐网站存子CSRF漏洞,这时张三要进行转账,这时正常转账的请求假设为http://bank.example/withdraw?account=张三&amount=1&for=李四这时正常的将张三的1元转给了李四,但是这时如果张三没有将转账网站的账号登出,并且访问了黑客制作的危险网站,这时危险网站发送了一个请求为http://bank.example/withdraw?account=张三&amount=1000000&for=黑客这时钱就转到了黑客手里,这主要的原因是转账网页服务器没有进行严格的过滤,导致危险网站发起了一个危险请求且成功访问,并且张三没有登出导致了浏览器存储着账号的cookie,这时危险网站发起的请求就携带了cookie被 ...
DVWA的wp
Burte Force这一关考察我们是爆破。
Low
这一串代码对与刷过sqli-labs的来说应该是比较熟悉的。我们审查代码可以看出来,这个代码没有对我们输入的username做任何过滤,只将password编码为md5,那么我们就有两种解法,一个是使用sql注入直接使用万能密码,第二个是使用bp来爆破了。
Medium这关我们查看源码mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user )我们发现多了这个函数,这个函数对于刷过sqlilabs的我们来说应该不陌生,这个函数的作用是给字符串里存在的特殊字符前加一个\对字符进行转义以此来防止注入。如果该数据库的字符集为gbk编码的话可以使用%df来进行绕过\但是这关不是那么这关就无法进行注入了。而且我们在查看一下代码可以发现只要登陆失败就会激活sleep(2)函数导致爆破速度变慢,但是我们仍然可以进行爆破
hightokentoken是防止重复登陆爆破的一种方式,token是由服务端随机生成,发送到客户端,将其保存在客户端的cookie或者sessi ...
c语言
8-1123456789101112131415161718192021222324252627282930#include <stdio.h>#include <string.h>#include <stdlib.h>int main() { char ch; FILE *i, *fp; i = fopen("d:\\data\\sy8-1-out.txt", "w"); ch = getchar(); while (ch != '#') { fputc(ch, i); ch = getchar(); } fclose(i); i = fopen("d:\\data\\sy8-1-out.txt", "r"); fp = fopen("d:\\data\\sy8-1-out1.txt", "w"); while (1) { ch = fgetc(i); if (f ...