等我web远控填完就踩这个坑
新坑:HTTPS的中间人(mitm)攻击
2019-07-21 | 黑科技 |
js自动选择器
作为一个优秀的"大学生",遇到一些繁杂,重复的东西,自然就需要一些特殊的技巧来完成啦。否则的话,就和最低级的苦力工没啥区别。
首单其中的,就是xxx质量评价啦,选项多还不说,还不能一个一个选过去
因此,为了解决这个办法,自然要。开整!
首先,我们先需要一个jq。
jq大法好!
var importJs=document.createElement('script')
importJs.setAttribute("type","text/javascript")
importJs.setAttribute("src", 'https://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js')
document.getElementsByTagName("head")[0].appendChild(importJs);之后,就是遍历该属性的select选择器
$("#divJs select").each(function(){ //遍历选择器
var b = Math.round(Math.random()); //生成0,1随机数
if (b==0){
$(this).val("优秀");}else{ //选择
$(this).val("良好");
}
});
$("#pjxx").text("海星海星海星");这样就完成啦,至于怎么用?
使用chrome,打开该页面,输入f12,按下console。
把上面两段代码复制过去,回车。
就会发现都选择完啦!
赛后马后炮---canary+字符串泄露+ROP构造
分析
二话不说,直接拉到IDA,然后F5走起。
之后我们跟进

很明显,这个是接收ID的,其中sub_400ABE函数应该就是接收函数了。我们看一看
果然,大概意思就是两个参数,一个字符串地址,一个接收的长度。然后for长度,用read接收字符,遇到n就break。
之后跟进第二个函数,是接收文本的,发现上面的recv长度可控。
大概逻辑就是接收文本长度,然后接收文本,然后把文本返回
然而因为接收的长度是严格按照我们输入的大小来控制的,在接收函数那似乎并不能溢出。
但是!看到第一个参数s。我们这个参数是一个字符串地址,往这里写入的长度是我们可以控制的,那么,这个s的内存是在哪里申请的呢?
我们往上找,在接收story长度的那里

看到了这个20ull
只要我们输入的长度大于这个20ull,理论就能覆盖返回地址。
虽说这里判断接收的size,如果>128,就默认是1024ll,但是我们看小于0,并没有判断大小
所以我们只需要在前面加个符号就能绕过判断了。
典型的ROP,之后就是我们要获取到libc地址。
代码直接使用了printf(%s),就是和明显的字符串泄露了
在此之前,先用checksec分析一下。
发现开启了canary。这时候就需要泄露canary地址了
打开IDA/gdp,给printf下断点,执行。然后查看栈。
找到xor ebp,ebp

数一数距离printf的栈顶有多远,这里是15,也就是cannary的地址了。
接下来得构造ROP调用system来执行我们的代码,就得用ROP构造了,不过在此之前我们得先找到libc的地址来构造。
因此我们先找个函数来计算libc基地址。到时候再更具基地址查找版本,再查找system函数的偏移就行了。
首先我们先用ldd来查看libc,got地址或者直接使用pwntools的elf功能。
大致思路就是这样,好困我先睡觉去了,明天找时间再写