4.[SWPUCTF 2021 新生赛]Do_you_know_http
打开题目,让我们用WLLM这个类型浏览器访问,然后需要伪造 User-Agent 来实现,用hackbar改一下请求头信息。
之后得到它的提示,说让访问当地网址,它的url后面还有一个a.php,需要让a.php认为127.0.0.1我们的本地网址进行访问。通过修改 HTTP 请求头实现。
MODIFY HEADER是一个ip模拟工具。
百度了解到:X-Forwarded-For 用于表示经过代理服务器或负载均衡器的 HTTP 流量的原始 IP 地址。当 HTTP 请求经过 多个代理服务器 或 负载均衡器 时,X-Forwarded-For 的值可能包含 多个用逗号隔开的 IP 地址,而第一个 IP 地址通常就是 源客户端的 IP 地址。
之后利用hackbar里面的MODIFY HEADER工具进行修改http请求头。
执行之后得到flag:NSSCTF{27fc2596-ee07-4464-85a4-ef88eafc55e2}
5.[SWPUCTF 2021 新生赛]easy_md5
打开题目,看到这个源代码
进行分析,它包含了一个名为"flag2.php"的文件,检查GET请求中是否存在名为'name'的变量和POST请求中是否存在名为'password'的变量。
$name != $password && md5($name) == md5($password)
如果这两个变量都存在,它将获取它们的值,并检查它们是否相等以及它们的MD5哈希值是否相等。
如果满足这些条件,它将输出名为'flag'的变量的值;否则,它将输出"wrong!"
根据题目提示,它应该是md5弱类型绕过:
由于php中存在==的弱类型比较,所以我们可以通过hash比较的缺陷去绕过 比如:var_dump("0e12345"=="0e66666");//true var_dump(md5('240610708')==md5('QNKCDZ0'));//true
也就是只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会现转换字符串的类型,在进行比较,而在比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,在进行严格比较(===)时才会先判断字符串类型是否相等,在比较。 像这样特殊的md5值还有 s878926199a s155964671a s21587387a
240610708:0e462097431906509019562988736854 QLTHNDT:0e405967825401955372549139051580 QNKCDZO:0e830400451993494058024219903391 PJNPDWY:0e291529052894702774557631701704 NWWKITQ:0e763082070976038347657360817689 NOOPCJF:0e818888003657176127862245791911 MMHUWUV:0e701732711630150438129209816536 MAUXXQC:0e478478466848439040434801845361
所以只需要用hackbar进行get请求和post传参,随便取两个特殊的MD5值。
执行之后得到flag:NSSCTF{76d7f1f3-1ead-4dbc-bbbc-2cda997c6dab}
6.[SWPUCTF 2021 新生赛]easy_sql
打开题目,发现背景很帅。
根据提示应该是简单的sql注入。标题告诉我们参数是wllm
然后进入sql注入?wllm=1发现报错
分别测试1,2,3,4发现当4时报错,说明这个页面只有三个位置:?wllm=-1' order by 4 --+
用三个数字填充显示位置来看看哪里能在屏幕上被看到:?wllm=-1' union select 1,2,3 --+
之后构造playload判断注入类型:?wllm=-1' union select 1,database(),3--+
正常sql注入一下:?wllm=-1' union select 1,(select flag from test_tb),3--+
得到flag:NSSCTF{e16bb4fe-4c9b-4436-9119-97393502dc71}
hackbar 里面的sqli选项里面可以直接构造语句,只需要修改查询的名称即可
持续更新中......